Мне действительно любопытно, как лучше всего настроить представления во фрагменте. Это то, чем я занимаюсь с тех пор, как начал разрабатывать под Android.
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.main_fragment, container, false);
ListView listView = view.findViewById(...);
listView.setAdapter(...);
return view;
}
Затем я прочитал о методе onActivityCreated и прочитал, что мне нужно настроить представление внутри него, а не onCreateView, поэтому я написал себе код, чтобы сделать то же самое.
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.main_fragment, container, false);
}
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
View view = getView();
if (view == null){
throw new NullPointerException("View returned null inside onActivityCreated this shouldn't have happened!");
}
ListView listView = view.findViewById(...);
listView.setAdapter(...);
}
Мне действительно любопытно, какая здесь разница? А что использовать? Какой из них вам рекомендует использовать Android?
@HarounHajem Это не дубликат, я не спрашиваю о разнице между ними. Я спрашиваю, что лучше.
Затем вы задаете вопрос, основанный на мнении. Мы не сомневаемся, что в SO все вопросы, основанные на мнениях, удаляются или блокируются, например. "Синий лучше красного?"
@HarounHajem, это не совсем правда. Это все равно что сказать, что String += String, а не использование StringBuilder в цикле, основано на мнении. Я спрашиваю, какой рекомендуемый способ настройки представлений. :)
Оба настраивают вид, но делают это в разном порядке. В документе рекомендуется использовать последний для настройки состояний -> см. Здесь stackoverflow.com/questions/8041206/…
Что такое Latter?
Имеется ввиду последний пример. Указывая на onActivityCreated
Хорошо, поэтому я не совсем понимаю, что этот человек подразумевает под статическими представлениями?
@Diffy, он имел в виду под статическим представлением, что представление, которое отображается пользователю, есть не что иное, как раздутый макет xml. Никаких изменений в коде или во время выполнения.
Они не содержат состояния, как описано в документации Google. Рекомендуется восстановить состояние в onActivityCreated




Вы действительно можете использовать все, что хотите, если это работает.
Однако я считаю, что onViewCreated () технически является «официальным» или рекомендуемым способом изменить и ссылаться на ваше представление после его создания.
Я вижу, что некоторые большие приложения также устанавливают его внутри onCreateView. Так что я подожду, пока ответят еще люди, прежде чем я приму ответ.
Так как никто не ответил более 11 дней, я сомневаюсь, что скоро ответят. Так что я просто приму это
Возможный дубликат Различие и использование onCreate (), onCreateView () и onActivityCreated () во фрагментах