【问题标题】:Remove fragments from backstack android?从backstack android中删除片段?
【发布时间】:2017-01-10 09:27:27
【问题描述】:

我总共有 7 个片段

Frag1 -> Frag2 -> Frag3 -> Frag4 -> Frag5 -> Frag6 -> Frag7 

用户从Frag1 -> Frag7导航 因此,当用户在 Frag7 上并按下返回按钮时,Frag1 应该是可见的。

这是片段交易代码

    public void displayView(Fragment fragment, Bundle data) {
    if (fragment != null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction ft = fragmentManager.beginTransaction();
        if (data != null) {
            if (fragment.getArguments() != null) {
                fragment.getArguments().putAll(data);
            } else {
                fragment.setArguments(data);
            }
        }
        if (!fragment.isAdded()) {
            ft.replace(R.id.frame, fragment);
            ft.addToBackStack(null);
        }
        ft.commit();
    } else {
        Logger.e("MainActivity", "Error in creating fragment");
    }
}

我打过电话 getActivity().getSupportFragmentManager().popBackStack(); 5 次,然后才转到 Frag7,但我总是把它当作 backstack

Frag7 -> Frag6 -> Frag1

我无法从用户导航的位置删除当前片段 (Frag6)。

【问题讨论】:

标签: android android-fragments fragment fragment-backstack


【解决方案1】:

您可以尝试以下代码 yourfragmentName 是您要重定向的片段

   if (getFragmentManager().getBackStackEntryCount() > 0) {
         getFragmentManager().popBackStack(yourfragmentName.class.getSimpleName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
}

【讨论】:

    【解决方案2】:

    请尝试以下逻辑 当你从Frag1 -> Frag2出发时 请使用ft.addToBackStack(null);

    然后当你从那里导航时

    Frag2 -> Frag3 -> Frag4 -> Frag5 -> Frag6 -> Frag7 
    

    你不需要添加到backstack意味着不要调用add to backStack();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2014-09-26
      相关资源
      最近更新 更多