片段方法:attach(),detach(),remove(),replace(),popBackStack()

Vik*_*pta 33 android fragment android-fragments back-stack

我对这些功能和它们的目的非常困惑.我观察到,使用新的replace()替换现有的片段.我们可以使用addToBackStack(null)将该片段放在后面的堆栈中,这样我们就可以回到之前显示的片段了.现在当一个片段被添加(或替换) - onAttach()- > onCreate()etc ....片段的方法按顺序调用.

现在,当我们remove()从我们的活动中调用片段时,片段的哪些函数被调用以及按什么顺序?

做什么attach()detach()做什么?是否detach()删除片段?并且这两个时attach()detach()使用时,该片段的功能调用,并且在该阶ΣΔ

还有什么呢popBackStack()?我的意思是当我们popBackStack()从我们的活动中使用片段时调用哪些函数?

什么时候onDestroy()调用?

谢谢.

Ada*_*nos 24

现在当我们从我们的活动调用片段上的remove()时,调用片段的哪些函数以及以哪种顺序调用?

请查看http://developer.android.com/reference/android/app/Fragment.html.

顺序是:onPause(),onStop(),onDestroyView(),onDestroy(),onDetach()

attach()和detach()有什么作用?detach()是否删除了片段?当使用这两个attach()和detach()时,会调用片段的哪些函数以及以哪种顺序调用?

attach()detach()分别是关联或分离的Fragment从与/ Activity.附加时Fragment,onAttach()调用生命周期方法,在分离时,onDetach()调用生命周期方法Fragment.有关更多信息,请查看上面的链接.

另外,popBackStack()会发生什么?我的意思是当我们在活动的片段上使用popBackStack()时调用哪些函数?

如果Fragment没有被破坏,然后popBackStack()onStart()onResume()方法调用.如果Fragment之前已经销毁过,那么将从中调用生命周期方法onAttach().当你按下后退按钮时,它就是一样的Activities.

  • 关于attach()和detach()的答案是*不正确*.调用`detach()`会将片段附加到活动中,因此`onDetach()`不被*调用,但它会分离其视图层次结构,因此`onPause()`,`onStop()`和`onDestroyView()`是按顺序调用.调用`attach()`要求片段处于分离视图状态并将其恢复到正常状态,按顺序调用:`onCreateView()`,`onActivityCreated()`,`onStart()`和`onResume( )`. (6认同)
  • “在 popBackStack() 上调用 onStart() 和 onResume() 方法”。这怎么可能???我们正在弹出片段,而不是添加它。 (2认同)

emo*_*rol 12

只是一个注释popBackStack().它不弹出片段,它会弹出片段事务.因此无论最后一个片段事务是什么都被颠倒了 如果您正在显示FragmentA并且您的交易是:

fragmentTransaction.replace(R.id.your_layout, fragmentB);
fragmentTransaction.addToBackStack(null);
Run Code Online (Sandbox Code Playgroud)

它将替换FragmentAFragmentB,并将该事务(不是片段)添加到后端堆栈.如果然后点击返回按钮,它会弹出返回堆叠,并得到了交易,这是"替换这个FragmentAFragmentB".然后它反转该交易.向后,指令是替换当前片段所用的内容FragmentA.如果原件FragmentA仍然存在,则使用该原件.如果它被摧毁了,它会成为一个新的.