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

В следующем 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 и Бандл. И все же, мы можем использовать переданные параметры.
Да, мы вызываем 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 Ответ

0 голосов
/ 20 января 2020

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

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

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

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

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

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

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

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

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

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

...