我有一个简单的问题。
如果我添加片段:
getFragmentManager()。的BeginTransaction()。添加(...)
始终可以通过以下方式访问:
getFragmentManager()。findFragmentByTag(...)
假设我永远不会打电话给beginTransaction().remove
?
(我只会使用hide()
和show()
个交易来操纵其可见性)
答案 0 :(得分:1)
我不明白为什么不,根据documentation,它可以访问,但是确保您也不会调用.replace()
。
因为.replace()
类似于.remove().add()
默认情况下,事务也不会添加到后台堆栈中。你可以:
transition.addToBackStack("TAG");
之后,如果您想稍后再参考,可以毫无问题地使用其标识符。
答案 1 :(得分:0)
当然,只要始终将Fragment附加到活动中,就始终可以访问它。调用 onDetach 后,片段就会被分离。
onDetach 在片段不再附加到其活动时调用。这是在 onDestroy()之后调用的,除非在活动重新创建期间保留了片段实例的情况下(请参见 setRetainInstance(boolean)),在这种情况下在 onStop()之后调用。
为了提高可视性,您使用hide()和show(),
隐藏()和 show()仅与已经连接到活动的片段相关。
简而言之, onDetach 永远不会在hide()和show()期间被调用。一个附加的片段永远不会在hide()和show()的过程中脱离活动。 。