Какие методы жизненного цикла фрагментов Android требуют супер

в настоящее время (Android API 17), единственное упоминание super В Android ссылка на фрагмент случайно через некоторые примеры кода (в отличие от Android ссылка на деятельность, который тщательно отмечает, где super требуется).

так говорит поиск в интернете при необходимости или в ожидании сбоя, чтобы определить, где вызов Это. Я прошу пользователей поделиться своими знаниями о том, какой из фрагментов методы жизненного цикла требуют вызова super.

методы жизненного цикла фрагментов-требуется вызов super

  • onAttach()
  • onCreate() - вероятно, да, как Activity версия требует
  • onCreateView() - кажется хорошо с или без
  • onActivityCreated()
  • onViewStateRestored()
  • onStart() - вероятно, да, как Activity версия требует
  • onResume() - вероятно, да, как Activity версия требует этого

  • onPause() - вероятно, да, как Activity версия требует

  • onStop() - вероятно, да, как Activity версия требует
  • onDestroyView()
  • onDestroy() - вероятно, да, как Activity версия требует
  • onDetach()

  • onSaveInstanceState() - вероятно, да, как Activity версия требует

3 ответов


все соответствующие методы жизненного цикла Activity, кроме onSaveInstanceState требуется вызов super. Кроме того:

все методы, требующие вызовов super поделитесь первой строкой своего метода в android.приложение.Фрагмент: mCalled = true;

таким образом, FragmentManager может проверить, является ли mCalled true и бросить SuperNotCalledException, когда он не вызывается. См.FragmentManager#moveToState чтобы увидеть эту реализацию.


при генерации фрагмента с Eclipse код шаблона метода onCreateView не имеет вызова super.onCreateView. Кроме того, в целом неплохая книга, опубликованная WROX: Android 4 Application Development пропускает ее в своем образце жизненного кода (он не пропускает никаких других вызовов super).

конечно, оба этих источника могут быть неправильными, но с использованием шаблона Eclipse и не добавлением super.onCreateView не вызвал у меня проблемы.


я печатаю с заглавной буквы " O "вместо маленькой буквы "o"

означает: OnCreate вместо методов onCreate.

Это глупая ошибка, но нужно помнить:)

спасибо