其中Android的碎片生命周期方法需要超(Which Android Fragment lifec

2019-07-18 17:28发布

目前(API的Android 17),唯一提到super在Android 上片段参考是随便经由一些代码示例(不像在Android 上活动参考 ,其中仔细地注意到,其中super是必需的)。

SO建议在网上搜索可以根据需要,或等待崩溃,以确定在哪里调用super是必需的。 我问SO用户共享该片段的生命周期方法需要将呼叫他们的知识super

片段生命周期方法-需要调用super

  • onAttach()
  • onCreate() -大概是,作为Activity的版本需要它
  • onCreateView() -似乎确定有或无
  • onActivityCreated()
  • onViewStateRestored()
  • onStart() -大概是,作为Activity的版本需要它
  • onResume() -大概是,作为Activity的版本需要它

  • onPause() -大概是,作为Activity的版本需要它

  • onStop() -大概是,作为Activity的版本需要它
  • onDestroyView()
  • onDestroy() -大概是,作为Activity的版本需要它
  • onDetach()

  • onSaveInstanceState() -大概是,作为Activity的版本需要它

Answer 1:

现在,除相应的活动的生命周期方法onSaveInstanceState需要超级调用。 此外:

  • onAttach() -是的
  • onActivityCreated() -是的
  • onViewStateRestored() -是不是片段的方法
  • onDestroyView() -是的
  • onDetach() -是的
  • onSaveInstanceState() -从片段的onSaveInstanceState#它看起来像一个没有

所有这一切都需要超级分享他们的方法在android.app.Fragment第一行调用方法: mCalled = true;

这样的FragmentManager可以检查是否mCalled是真实的,抛出一个SuperNotCalledException时不叫了。 见FragmentManager#moveToState看到这个实现。



Answer 2:

当生成与Eclipse的片段,所述方法onCreateView模板代码不必super.onCreateView的呼叫。 此外,通过WROX出版的一般都相当不错的书:安卓4.0应用开发错过它在其一生样本代码(它不会错过任何其他调用超)。

当然,这两个两个来源可能是不正确的,但是使用Eclipse模板,并且不添加super.onCreateView并没有引起我的问​​题。



Answer 3:

我用大写字母代替小写字母“O”输入“O”

是指:在OnCreate而不是的onCreate方法。

它是一个愚蠢的错误,但要记住:)

谢谢



文章来源: Which Android Fragment lifecycle methods require super