繁体   English   中英

两个片段之间的导航

[英]navigation between 2 fragments

我的应用程序中有2个片段A和B. 主要活动从片段A开始。按下按钮,我用片段B替换它。

FragmentManager fm = getSupportFragmentManager();
B_Fragment pfrag = new B_Fragment();
pfrag.setArguments(args);
fm.beginTransaction().replace(R.id.frag_container, pfrag)
        .addToBackStack("A_Fragment").commit();

现在在片段B中我按下一个按钮,用片段A替换它:

fm.popBackStack();
fm.beginTransaction().addToBackStack("B_fragment").commit();

片段A被成功推送并从堆栈中弹出,其中片段B不是。 每次B_fragment被销毁并创建一个新的。 那么有人可以告诉我我缺少什么以及如何将片段B推入堆栈并同时弹出A。

FragmentManager fm = getSupportFragmentManager();
B_Fragment pfrag = new B_Fragment();
pfrag.setArguments(args);
fm.beginTransaction().replace(R.id.frag_container, pfrag).commit();

Fragment B ,为什么不用Fragment A替换它

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.pnlLeft, details);
ft.commit();

popBackStack不加载最后一个片段,它通常用于弹出整个堆栈:

fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

在加载另一个片段之前

beginTransaction()
replace() Or add()
commit()

按下the button in Fragment B ,请尝试以下代码。 这将重新加载entire fragment

FragmentManager fm = getSupportFragmentManager();
if (fm.getBackStackEntryCount() > 0) {
    fm.popBackStack();
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM