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


구글맵을 프래그먼트로 만들지않고 액티비티상(?)에 띄우고있습니다. 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월 22일에 수정됨
    Software Engineer
  • 2016년 11월 20일에 작성됨
    안녕하세요!!

조회수 48


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close