9

Currently (Android API 17), the only mention of super in the Android Reference on Fragment is casually via some code examples (unlike the Android Reference on Activity, which carefully notes where super is required).

SO suggests searching the web as needed, or waiting for a crash, to identify where a call to super is required. I'm asking SO users to share their knowledge on which of the Fragment lifecycle methods require a call to super.

Fragment lifecycle methods - require call to super

  • onAttach()
  • onCreate() - presumably yes, as Activity version requires it
  • onCreateView() - seems ok with or without
  • onActivityCreated()
  • onViewStateRestored()
  • onStart() - presumably yes, as Activity version requires it
  • onResume() - presumably yes, as Activity version requires it

  • onPause() - presumably yes, as Activity version requires it

  • onStop() - presumably yes, as Activity version requires it
  • onDestroyView()
  • onDestroy() - presumably yes, as Activity version requires it
  • onDetach()

  • onSaveInstanceState() - presumably yes, as Activity version requires it

4

3 に答える 3

5

super onSaveInstanceState. 加えて:

  • onAttach()- はい
  • onActivityCreated()- はい
  • onViewStateRestored()- Fragment メソッドではありません
  • onDestroyView()- はい
  • onDetach()- はい
  • onSaveInstanceState()- Fragment#onSaveInstanceStateからは、no のように見えます

スーパー共有の呼び出しを必要とするすべてのメソッドは、android.app.Fragment のメソッドの最初の行を共有します。 mCalled = true;

そうすれば、FragmentManager は mCalled が true かどうかを確認し、呼び出されていない場合に SuperNotCalledException をスローできます。この実装についてはFragmentManager#moveToStateを参照してください。

于 2013-01-26T00:15:36.910 に答える
0

小文字の「o」ではなく大文字の「O」で入力しています

意味: onCreate メソッドの代わりに OnCreate 。

ばかげた間違いですが、覚えておく必要があります:)

ありがとう

于 2016-02-16T06:21:59.900 に答える
0

Eclipse でフラグメントを生成する場合、onCreateView メソッド テンプレート コードには super.onCreateView への呼び出しがありません。また、WROX によって発行された一般的に非常に優れた本: Android 4 Application Development は、そのサンプル ライフタイム コードでそれを見逃しています (それは super への他の呼び出しを見逃すことはありません)。

もちろん、これら 2 つのソースは両方とも間違っている可能性がありますが、Eclipse テンプレートを使用し、super.onCreateView を追加しないことで問題が発生することはありませんでした。

于 2014-08-05T13:10:17.230 に答える