我将片段添加到堆栈中。例如:A, B, C, A, D
。然后我要从D
更新第二个A
。
如果我使用supportFragmentManager.findFragmentByTag("A")
,则会引用第一个A
,它位于后堆栈的底部。
我尝试搜索fragments
集合getBackStackEntryAt(i)
,但没有成功。
答案 0 :(得分:0)
很抱歉,看着get the latest fragment in backstack,我了解到findFragmentByTag(tag)
找到了包含必需tag
的最后一个片段。以我为例,在添加许多片段之后,有时发现不是最后一个带有tag
的片段,而是一个上一个要持续的(具有相同的tag
)。也许我的代码中有一个错误,我不知道,那是为什么。
首先,我尝试使用回调,然后尝试使用parentFragment
和childFragmentManager
,请参见getParentFragment returning null。在片段D
中,我调用了parentFragment
并访问了A
的方法,并且可以更新最后一个A
片段。此解决方案有两个问题。
1)子片段(D
)继承了父片段(A
)的工具栏,并添加了自己的按钮。在单击Back
按钮后,我们将不返回父级,甚至退出父级(A
)。
2)如果我们不想更新以前的片段(因此A和D之间也有3个片段),这似乎是不可能的。
因此,我取消了该解决方案,并更改了应用程序的行为。我清理了一个可能的后备箱。这样我们就不能在堆栈中有两个A
片段。我使用supportFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
。是的,这是一种解决方法,但我不知道如何处理该错误。