如何从后台堆栈中只删除特定的片段?

时间:2018-01-04 08:01:43

标签: android fragment back-stack fragment-backstack

我正在使用片段架构我在片段中设计了登录页面,我想在用户登录成功后从后台堆栈中删除唯一的登录片段并打开另一个片段,请帮助我。

3 个答案:

答案 0 :(得分:1)

试试这个,

您可以将标记添加到每个片段,同时将它们添加到backstack,然后从backstack弹出片段,直到找不到包含所需标记的片段。

FragmentManager fm = getFragmentManager();

    for (int i = fm.getBackStackEntryCount() - 1; i > 0; i--) {
        if (!fm.getBackStackEntryAt(i).getName().equalsIgnoreCase(tagname)) {
            fm.popBackStack();
        }
        else
        {
         break;
        }
    }

答案 1 :(得分:0)

<强>替换()

使用replace(),在添加要显示的新片段之前,它将替换后台堆栈中的登录片段

示例

 Fragment fr1= new GoFragment();
 FragmentTransaction ft = getFragmentManager().beginTransaction();
 ft.replace(R.id.FragmentContainer,newFragment);
  ft.addToBackStack(null);
  ft.commit();

答案 2 :(得分:0)

  

当用户成功登录时,请不要将登录片段添加到   BackStack,然后你需要注释下面的行。

ft.addToBackStack(null);

当用户从一个片段导航到另一个片段时,此行会将您的片段添加到BackStack。

  

请参阅以下链接

https://developer.android.com/guide/components/fragments.html

执行片段交易主题