FragmentTransaction添加的片段是否始终可访问?

时间:2016-09-24 15:26:03

标签: android android-fragments

我有一个简单的问题。

如果我添加片段:

  

getFragmentManager()。的BeginTransaction()。添加(...)

始终可以通过以下方式访问:

  

getFragmentManager()。findFragmentByTag(...)

假设我永远不会打电话给beginTransaction().remove

(我只会使用hide()show()个交易来操纵其可见性)

2 个答案:

答案 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()的过程中脱离活动。 。