我的应用程序只有一个活动和许多片段。
在activty的xml中,我只有一个FrameLayout
来替换/添加/隐藏/显示各种片段。
想象一下Fragment A
是用户打开应用程序时看到的第一个片段。
单击Fragment A
中的某个启动Fragment B
并单击Fragment B
中的某个启动Fragment C
。
因此,导航可以如下所示:
片段A-->片段B-->片段C
我想启动应用程序并直接从通知中显示Fragment C
。
但是,我如何提供从Fragment C
返回的导航,因此单击“上一步”将转到Fragment B
并再次单击“上一步”转到Fragment A
?
即如何注入以下堆栈结构?
A片段
最佳答案
是的,你可以这样做。由于支持库v26,因此您可以使用片段构建堆栈,而无需大量成本。
在您的活动中,请执行以下操作:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new FragmentA())
.addToBackStack("fragmentA")
.setReorderingAllowed(true)
.commit();
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new FragmentB())
.addToBackStack("fragmentB")
.setReorderingAllowed(true)
.commit();
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new FragmentC())
.addToBackStack("fragmentC")
.setReorderingAllowed(true)
.commit();
记住fragmenta和fragmentb由于setreorderingallowed在按下fragmentc后的行为方式会有所不同。在将fragmenta和fragmentb添加到堆栈后,不会为它们调用oncreateview,只有在fragmentc中才会调用oncreateview。对于fragmenta和fragmentb,只调用oncreate。