이전에 조각을 처리했지만보기 호출기 및 tablayout을 사용하여 배열을 작성하고 해당 배열에서 조각을 반환하여 조각 상태를 유지할 수있었습니다.탐색보기 조각 및 자식 백스틱
하지만 이제는 조각 관리자를 사용하여 추가 및 바꾸기에 액세스 할 수 있지만 둘 다 발생 한 내용을 저장하지 않고 (즉, editText를 입력하여) 조각의 새 인스턴스를 만듭니다.
메뉴에서 탐색 할 때 생성 한 프래그먼트를 유지하거나 재사용하는 방법 (이러한 프래그먼트 중 일부는 자식 백 스택을 가지므로 뒤로 버튼은 내 주요 프래그먼트가 아닌 깊은 조각 만 가져야 함을 기억하십시오))
편집 해결
private void initNavigation(){
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
/* Initialize fragments for navigation drawer */
fragments = new Fragment[]{
new ProfileFragment(),
new StatsFragment()};
/* Set selection of navigation item */
nav_view = (NavigationView) findViewById(R.id.nav_view);
nav_view.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
item.setChecked(true);
FragmentManager fragmentManager = getSupportFragmentManager();
switch (item.getItemId()) {
case R.id.nav_routine:
if(fragmentManager.findFragmentByTag("TAG0") != null){
Log.i("fm", "reloading profile frag");
fragmentManager.beginTransaction().replace(R.id.content_main,
fragmentManager.findFragmentByTag("TAG0"), "TAG0");
} else{
fragmentManager.beginTransaction().replace(R.id.content_main, fragments[0], "TAG0").commit();
}
break;
default:
if(fragmentManager.findFragmentByTag("TAG1") != null){
Log.i("fm", "reloading stats frag");
fragmentManager.beginTransaction().replace(R.id.content_main,
fragmentManager.findFragmentByTag("TAG1"), "TAG1");
} else{
fragmentManager.beginTransaction().replace(R.id.content_main, fragments[1], "TAG1").commit();
}
break;
}
drawerLayout.closeDrawers();
return true;
}
}
);
}
현재 코드 : 내가보기 위해서는 저장 할에이 ID가 있어야합니다 것을 발견
가 (의미가). 또한 나는 내 이전 코드
nav_view.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
item.setChecked(true);
FragmentManager fragmentManager = getSupportFragmentManager();
switch (item.getItemId()) {
case R.id.nav_routine:
fragmentManager.beginTransaction().replace(R.id.content_main, fragments[0], "TAG0").commit();
break;
default:
fragmentManager.beginTransaction().replace(R.id.content_main, fragments[1], "TAG1").commit();
break;
}
drawerLayout.closeDrawers();
return true;
}
}
);
사용 onSaveInstanceState .. –