3

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

在我的 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 <-- 片段 B <-- 片段 C

4

2 回答 2

1

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

请记住,由于 setReorderingAllowed,在按下 FragmentC 后,FragmentA 和 FragmentB 的行为方式会有所不同。FragmentA 和 FragmentB 入栈后不会调用 onCreateView,只有 FragmentC 会调用 onCreateView。对于 FragmentA 和 FragmentB,只会调用 onCreate。

于 2017-07-09T14:11:04.170 回答
1

您可以做的是 - 使用您传递字符串的通知意图。在您的主要活动中,如果您收到该字符串,则制作一个由 A、B 和 C 组成的片段堆栈。否则,如果您没有得到意图,请继续您的流程。

于 2016-05-19T05:59:55.810 回答