为One Activity Many fragment App构建碎片堆栈



我的应用程序只有一个活动有很多碎片

在我的活动的XML中,我只有一个FrameLayout,我在它上面替换/添加/隐藏/显示各种片段。

假设Fragment A是用户打开应用程序时看到的第一个片段。

单击Fragment A中的某个内容可启动Fragment B,单击Fragment B中的某一内容可启动Fragment C

因此,导航可以如下所示:

片段A->片段B->片段C-

我想启动应用程序并直接从通知中显示Fragment C

但是,我如何从Fragment C提供返回导航,因为单击返回将转到Fragment B,再次单击返回将转至Fragment A

即如何注入以下堆栈结构?

片段A<--片段B<--片段C

是的,你可以这样做。由于支持库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();

请记住,由于setReroderingAllowed,FragmentA和FragmentB在按下FragmentC后的行为方式会有所不同。在FragmentA和FragmentB添加到堆栈后,不会对它们调用onCreateView,只会在FragmentC中调用onCreateView。对于FragmentA和FragmentB,只会调用onCreate。

您可以做的是-使用传递字符串的通知意图。在你的主要活动中,如果你收到这个字符串,就制作一个a、B和C的片段堆栈。否则,如果你没有达到目的,就继续你的流程。

相关内容

  • 没有找到相关文章

最新更新