片段堆栈:从顶部片段推送/弹出片段

cvitae 发布于 2019-03-09 android 最后更新 2019-03-09 14:39 3 浏览

Support4Demos功能片段堆栈...但方便地将弹出/推出的CountingFragment控件放置在堆栈之外(全部在一个布局中进行,但按下/弹出按钮在下面,仍在包含整个布局的片段中。
点击 如何使控件从顶部的片段工作?
点击 [编辑] 另一种看待它的方式:
我想让堆栈上的碎片表现得像活动一样,每个碎片都可以自己弹出,或者启动另一个。
你将如何改变Support4Demos中的“FragmentStack”示例,以便“回家”/“添加新的”/“Pop top”按钮位于CountingFragments中,而不是保存FragmentManager的FragmentStackSupport?
一个合理的设计 - 考虑“CountingFragments”包含可点击的ListViews?
点击 怎么做?理想情况下,每个堆栈片段都会引用“堆栈持有者”片段或它的(子)片段管理器。但是,它们不是可以Parcelable的,Fragment constructors must not be used(尽管其他所有方法都很好)。这也是不好的,因为“堆栈持有者”碎片也可以被破坏和重新创建 点击 点击 [EDIT2]点击 好的,这里有一些我想出来的想法。

  • 对于“回家”和“弹出式顶端”,我想我可以将这些(不可见)按钮添加到托管碎片,然后通过getWindow().getDecorView().findViewById或其他方式在托管碎片中访问它们。
    这够丑陋。但推新的?只有我能想到的相关事情是将自定义视图类添加到托管布局中,该托管布局保留对FragmentManager的引用,以供托管碎片捕获。
  • 在某处静态地图中持有对FragmentManager的引用
  • 在宿主片段中注册BroadcastReceiver,通过托管宿主的数据发送广播,告诉它要做什么。但主机碎片不应该照看其子女。
  • 让每个堆叠的片段本身都托管其真实内容或下一个堆叠的片段。那样的话,总是有一个FragmentManager(除了弹出),但每页需要2个片段,更不用说它的奇怪了。
    结果
请告诉我有一个更清洁的方式。
已邀请: