我的应用程序只有一个活动和许多片段。
在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。

10-06 06:50
查看更多