Где методы жизненного цикла и другие методы получают значения своих параметров?
В следующем методе жизненного цикла 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 call
onCreateView()`на фрагменте. Передаются следующие параметры:
LayoutInflater
: TheLayoutInflater
объект, который можно использовать для расширения любых представлений вFragment
. Фреймворк получаетLayoutInflater
изActivity
сContext
.ViewGroup
: Если не равно нулю, это родительский вид, к которому должен быть прикреплен пользовательский интерфейс фрагмента. Фрагмент не должен добавлять само представление, но его можно использовать для созданияLayoutParams
зрения. Этот параметр - контейнерView
который держитFragment
.
Bundle
: Если не равно нулю, этот фрагмент восстанавливается из предыдущего сохраненного состояния, как указано здесь. В этом случаеBundle
содержит последнее сохраненное состояние Fragment
(то есть: данные из последнего вызова, сделанного Fragment
s onSaveInstanceState()
метод).
Что касается других ваших вопросов:
Если вы определяете метод
foo()
, платформа Android никогда не назовет это. Платформа Android имеет определенный набор определенных методов, которые она вызывает для определенных компонентов (Activity, Service, BroadcastReceiver, Fragment
и т. д.) в определенное время.В
View
вернулся изonCreateView()
будет использоваться платформой Android. В документации четко указано, как возвращаетсяView
объект используется:
Если вы вернете View отсюда, вас позже вызовут
onDestroyView()
когда вид будет выпущен.