Где методы жизненного цикла и другие методы получают значения своих параметров?

В следующем методе жизненного цикла Android:


  @Override
  public View onCreateView(
      LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = super.onCreateView(inflater, container, savedInstanceState);
    ...
    return view;
  }

onCreateView принимает ‍‍‍‍‍‍‍‍‍‍LayoutInflater, @Nullable Viewgroup, а @Nullable Bundle.
У меня проблема в программе-примере, о которой я говорю: sceneform-android-sdk

Кажется, не существует случая, когда мы вызываем метод onCreateViewи передайте LayoutInflatter, Viewgroup и Bundle. Тем не менее, мы можем использовать переданные параметры.
Да мы звонимsuper.onCreateView(...), но опять же, где значения, переданные в качестве аргументов суперу, были параметрами нашегоlocal версия onCreateView, откуда?

Повторяю, мой главный вопрос будет заключаться в том, что вызывает метод onCreateView и передает параметры?
Мой второй вопрос: если бы я создал метод в том же действии, в котором onCreateView находится:

public void foo(LayoutInflater myInflater) // Or it takes in a Bundle, Viewgroup, etc.

Будет ли мой метод foo иметь те же значения параметров, что и метод onCreateView?
Наконец, мой третий вопрос был бы в том же духе. Представление возвращается, но, как и раньше, не похоже, что мы обрабатываем возврат. Итак, что обрабатывает возвращаемое значение?
Если возможно, я бы смиренно попросил продолжить чтение о том, как работает код ядра Android, чтобы реализовать свои собственные методы, которые правильно используют параметры из Android, а также как правильно возвращать значения в Android.

1 ответ

Решение

ДокументацияFragment.onCreateView() указывает на следующее:

Это будет вызываться между onCreate(Bundle) и onActivityCreated(Bundle).

Фреймворк Android сам выполняет все вызовы жизненного цикла. onCreate() на фрагментеto initialize the fragment. At some later time, the Android framework will callonCreateView()`на фрагменте. Передаются следующие параметры:

  • LayoutInflater: The LayoutInflater объект, который можно использовать для расширения любых представлений в Fragment. Фреймворк получаетLayoutInflater из Activityс Context.

  • ViewGroup: Если не равно нулю, это родительский вид, к которому должен быть прикреплен пользовательский интерфейс фрагмента. Фрагмент не должен добавлять само представление, но его можно использовать для созданияLayoutParamsзрения. Этот параметр - контейнерView который держит Fragment.

Bundle: Если не равно нулю, этот фрагмент восстанавливается из предыдущего сохраненного состояния, как указано здесь. В этом случаеBundle содержит последнее сохраненное состояние Fragment (то есть: данные из последнего вызова, сделанного Fragments onSaveInstanceState() метод).

Что касается других ваших вопросов:

  • Если вы определяете метод foo(), платформа Android никогда не назовет это. Платформа Android имеет определенный набор определенных методов, которые она вызывает для определенных компонентов (Activity, Service, BroadcastReceiver, Fragmentи т. д.) в определенное время.

  • В View вернулся из onCreateView()будет использоваться платформой Android. В документации четко указано, как возвращаетсяView объект используется:

Если вы вернете View отсюда, вас позже вызовут onDestroyView() когда вид будет выпущен.

Другие вопросы по тегам