Вид установки внутри onCreateView vs onActivityCreated

Мне действительно любопытно, как лучше всего настроить представления во фрагменте. Это то, чем я занимаюсь с тех пор, как начал разрабатывать под 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 Это не дубликат, я не спрашиваю о разнице между ними. Я спрашиваю, что лучше.

SamHoque 20.12.2018 23:24

Затем вы задаете вопрос, основанный на мнении. Мы не сомневаемся, что в SO все вопросы, основанные на мнениях, удаляются или блокируются, например. "Синий лучше красного?"

Haroun Hajem 20.12.2018 23:28

@HarounHajem, это не совсем правда. Это все равно что сказать, что String += String, а не использование StringBuilder в цикле, основано на мнении. Я спрашиваю, какой рекомендуемый способ настройки представлений. :)

SamHoque 20.12.2018 23:37

Оба настраивают вид, но делают это в разном порядке. В документе рекомендуется использовать последний для настройки состояний -> см. Здесь stackoverflow.com/questions/8041206/…

Haroun Hajem 20.12.2018 23:46

Что такое Latter?

SamHoque 21.12.2018 00:00

Имеется ввиду последний пример. Указывая на onActivityCreated

Haroun Hajem 21.12.2018 00:02

Хорошо, поэтому я не совсем понимаю, что этот человек подразумевает под статическими представлениями?

SamHoque 21.12.2018 00:05

@Diffy, он имел в виду под статическим представлением, что представление, которое отображается пользователю, есть не что иное, как раздутый макет xml. Никаких изменений в коде или во время выполнения.

Haroun Hajem 22.12.2018 00:38

Они не содержат состояния, как описано в документации Google. Рекомендуется восстановить состояние в onActivityCreated

Haroun Hajem 22.12.2018 00:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
10
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы действительно можете использовать все, что хотите, если это работает.

Однако я считаю, что onViewCreated () технически является «официальным» или рекомендуемым способом изменить и ссылаться на ваше представление после его создания.

Я вижу, что некоторые большие приложения также устанавливают его внутри onCreateView. Так что я подожду, пока ответят еще люди, прежде чем я приму ответ.

SamHoque 20.12.2018 23:23

Так как никто не ответил более 11 дней, я сомневаюсь, что скоро ответят. Так что я просто приму это

SamHoque 31.12.2018 11:59

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