728x90
반응형
getFragmentManager() 코드를 사용한 아래 코드의 부분에서 에러가 발생했었다.
if (id == R.id.nav_first_layout){
manager.beginTransaction().replace(R.id.content_main, new FirstLayout()).commit();
} else if (id == R.id.nav_second_layout){
manager.beginTransaction().replace(R.id.content_main, new SecondLayout()).commit();
}
처음 에러가 뜨는 부분은 content_main 부분이거나, new FirstLayout() 부분이라, 그 부분만 보았었고, 삽질을 하다가 알아낸 사실은 문제가 거기에 있지 않았다.
위 코드부분을 전체적으로 보면 다음과 같다.
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
FragmentManager manager = getFragmentManager();
if (id == R.id.nav_first_layout){
manager.beginTransaction().replace(R.id.content_main, new FirstLayout()).commit();
} else if (id == R.id.nav_second_layout){
manager.beginTransaction().replace(R.id.content_main, new SecondLayout()).commit();
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
코드를 보면 FragmentManager 부분이 보이는데, 이 부분의 getFragmentManager()가 문제였다.
해결방안은 getFragmentManager()를 getSupportFragmentManager()로 바꾸어 주면 된다.
FragmentManager manager = getSupportFragmentManager();
해당 에러의 원인은 안드로이드 버전이 높아지면서 안드로이드 파이 버전부터는 사용하지 않기 때문이라고 한다.
삽질하느라 좀 힘들었는데 그래도 해결했다.
728x90
반응형