我正在研究基于单一 Activity 的原则。但是当再次打开同一个 fragment 时,我面临一个问题,因为它再次添加了 fragment backstack 条目。因此 backstack 包含同一 fragment 的多个 backstack 条目。这会在后退导航上产生问题。

示例:- A|B|C|D|A|C|A

所以当我按下返回键时,同一个 fragment 会显示多次。有什么方法可以重用 backstack 条目中的现有 fragment 。

我正在像这样管理我的后台:-

fragmentManager.beginTransaction().setCustomAnimations(R.anim.fragment_enter,
                        R.anim.fragment_exit, R.anim.pop_enter, R.anim.pop_exit).
                        add(R.id.frameLayout, fragment).addToBackStack(backStateName).commit();

任何形式的帮助将不胜感激。

最佳答案

private void createOrResumeFragment(String fragmentTag){
  FragmentManager manager = getSupportFragmentManager();
  FragmentTransaction ft = manager.beginTransaction();
  boolean fragmentPopped = manager.popBackStackImmediate (fragmentTag, 0);
  Fragment fragment = manager.findFragmentByTag(fragmentTag);
    if(!fragmentPopped && fragment == null){
      //Create an new instance if it is null and add it to stack
       fragment = new MyFragment();
       ft.addToBackStack(fragmentTag);
    }
    ft.replace(R.id.framelayout, fragment);
    ft.commit();
}

关于android - 单实例 fragment 回栈管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40168293/

10-12 01:21