Android(фрагмент) - рекомендуется ли инициализировать объект представления внутри метода onActivityCreated?
View
переменные фрагментов могут быть инициализированы в onCreateView
метод таким образом. Вот TextView
находится внутри фрагмента.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragmant_two,container,false);
if(savedInstanceState == null)
{
}
else
{
String data = savedInstanceState.getString("data");
TextView myText = (TextView)view.findViewById(R.id.text_view);
myText.setText(data);
}
return view;
}
Но я обнаружил, что представление инициализируется внутри onActivityCreated
в этом случае.
textView = (TextView) getActivity().findViewById(R.id.text_view);
есть ли причина, по которой я должен выбрать onActivityCreated
над onCreateView
?
5 ответов
textView = (TextView) getActivity().findViewById(R.id.text_view);
Это попытается найти представление с идентификатором R.id.text_view
из макета вашей деятельности, а не вашего фрагмента. Если представление с этим идентификатором присутствует в самом фрагменте, то вы должны использовать onCreateView
метод внутри вашего фрагмента.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragmant_two,container,false);
TextView textView = (TextView) view.findViewById(R.id.text_view);
// bind your data here.
return view;
}
Очевидно, что onActivityCreated был использован, потому что представление найдено в Activity.
Вы также можете использовать onAttach для этого, хотя.
Лично в onViewCreated я помещаю инициализации представления фрагмента
Вы можете обратиться к этому вопросу, чтобы понять больше о onActivityCreated и onCreateView здесь
OnCreate():
Метод onCreate () во фрагменте вызывается после onAttachFragment() действия, но перед onCreateView() этого фрагмента. В этом методе вы можете назначать переменные, получать дополнительные функции In tent и все остальное, что не связано с иерархией View (т.е. неграфические инициализации). Это связано с тем, что этот метод можно вызывать, когда onCreate () в Activity не завершен, и попытка получить доступ к иерархии представлений здесь может привести к сбою.
onCreateView():
После вызова onCreate () (во фрагменте) вызывается onCreateView() фрагмента. Вы можете назначить переменные View и выполнить любую графическую инициализацию. Ожидается, что вы вернете представление из этого метода, и это основное представление пользовательского интерфейса, но если ваш фрагмент не использует макеты или графику, вы можете вернуть значение null (происходит по умолчанию, если вы не переопределяете).
onActivityCreated ():
Как следует из названия, он вызывается после завершения onCreate (). Он вызывается после onCreateView() и используется в основном для окончательной инициализации (например, для изменения элементов пользовательского интерфейса).
onCreateView(): здесь вы можете назначить переменные View и выполнить любую графическую инициализацию.
onActivityCreated (): вызывается после onCreateView() и в основном используется для окончательной инициализации (например, для изменения элементов пользовательского интерфейса).
В onCreateView вы не сможете использовать getActivity.findViewByID()
Но вы можете в onActivityCreated.
Я также предлагаю использовать onView Created(). Здесь вы также можете использовать getActivity.findViewByID().