편집 기록

편집 기록
  • 프로필 김선우님의 편집
    날짜2016.11.22

    안드로이드 맵 프래그먼트 질문이요!


    구글맵을 프래그먼트로 만들지않고 액티비티상(?)에 띄우고있습니다. R.id.home 눌렀을때는 특정 좌표가 찍히는 지도가나오고, R.id.nav_record_section 눌렀을 때는 따로 만들어둔 프래그먼트화면이 띄워지고, R.id.nav_edit 눌렀을때 마찬가지로 따로 만들어둔 프래그먼트가 화면에 띄워집니다.

    문제는 홈에서 다른 네비게이션 아이템을 클릭했을때는 잘 넘어가는데 따로 만들어둔 프래그먼트로 넘어갔다가 다시 홈화면으로 넘어오면 'java.lang.NullPointerException' 에러가 뜹니다....

    혹시 이걸 개선하려면...

    1. 구글맵도 따로 프래그먼트화 시켜야하나요??
    2. 다른 네비게이션 아이템을 클릭했다가도 홈을 클릭하면 이전에 가지고있던 위치정보같은것은 못불러오나요??
     public boolean onNavigationItemSelected(MenuItem item)
    {
         int id = item.getItemId(); 
         Fragment fragment = null;
    
            FragmentManager fragmentManager = getFragmentManager();
            final RelativeLayout layout_summaryData = (RelativeLayout) findViewById(R.id.layout_summaryData);
            final RelativeLayout layout_ridingData = (RelativeLayout) findViewById(R.id.layout_ridingData);
    
            if (id == R.id.nav_home) {
                Log.e(TAG, "네비 홈 눌렸다!");
                navigationView.setCheckedItem(R.id.nav_home);
                layout_ridingData.setVisibility(View.GONE);
                layout_summaryData.setVisibility(View.GONE);
                fab.setVisibility(View.VISIBLE);
    
                fab = (FloatingActionButton) findViewById(R.id.fab);
                fab.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        startLocationUpdates();
                        //fab버튼누르면 라이딩으로 바뀜.
                        navigationView.setCheckedItem(R.id.nav_riding);
                        startRiding();
                    }
                });
            } else if (id == R.id.nav_record_section_info) {
                navigationView.setCheckedItem(R.id.nav_record_section_info);
                layout_ridingData.setVisibility(View.GONE);
                layout_summaryData.setVisibility(View.GONE);
                fab.setVisibility(View.GONE);
            } else if (id == R.id.nav_edit) {
                fragment = new EditFragment();
            }
    
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace( R.id.fragment_place, fragment );
            fragmentTransaction.commit();
    
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }
    
  • 프로필 알 수 없는 사용자님의 편집
    날짜2016.11.20

    안드로이드 맵 프래그먼트 질문이요!


    구글맵을 프래그먼트로 만들지않고 액티비티상(?)에 띄우고있습니다. R.id.home 눌렀을때는 특정 좌표가 찍히는 지도가나오고, R.id.nav_record_section 눌렀을 때는 따로 만들어둔 프래그먼트화면이 띄워지고, R.id.nav_edit 눌렀을때 마찬가지로 따로 만들어둔 프래그먼트가 화면에 띄워집니다.

    문제는 홈에서 다른 네비게이션 아이템을 클릭했을때는 잘 넘어가는데 따로 만들어둔 프래그먼트로 넘어갔다가 다시 홈화면으로 넘어오면 'java.lang.NullPointerException' 에러가 뜹니다....

    혹시 이걸 개선하려면...

    1. 구글맵도 따로 프래그먼트화 시켜야하나요??
    2. 다른 네비게이션 아이템을 클릭했다가도 홈을 클릭하면 이전에 가지고있던 위치정보같은것은 못불러오나요??

    public boolean onNavigationItemSelected(MenuItem item) { int id = item.getItemId(); Fragment fragment = null;

        FragmentManager fragmentManager = getFragmentManager();
        final RelativeLayout layout_summaryData = (RelativeLayout) findViewById(R.id.layout_summaryData);
        final RelativeLayout layout_ridingData = (RelativeLayout) findViewById(R.id.layout_ridingData);
    
        if (id == R.id.nav_home) {
            Log.e(TAG, "네비 홈 눌렸다!");
            navigationView.setCheckedItem(R.id.nav_home);
            layout_ridingData.setVisibility(View.GONE);
            layout_summaryData.setVisibility(View.GONE);
            fab.setVisibility(View.VISIBLE);
    
            fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    startLocationUpdates();
                    //fab버튼누르면 라이딩으로 바뀜.
                    navigationView.setCheckedItem(R.id.nav_riding);
                    startRiding();
                }
            });
        } else if (id == R.id.nav_record_section_info) {
            navigationView.setCheckedItem(R.id.nav_record_section_info);
            layout_ridingData.setVisibility(View.GONE);
            layout_summaryData.setVisibility(View.GONE);
            fab.setVisibility(View.GONE);
        } else if (id == R.id.nav_edit) {
            fragment = new EditFragment();
        }
    
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace( R.id.fragment_place, fragment );
        fragmentTransaction.commit();
    
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }