Какой из них является лучшим способом доступа к представлениям фрагментов Android? - PullRequest
1 голос
/ 07 ноября 2019

Чем эти методы отличаются друг от друга при попытке получить представление?

Первый:

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_a, container, false);
    listView = view.findViewById(R.id.listview);
    return view;
}

Второй:

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
     listView = getActivity().findViewById(R.id.listview);  }

* некоторые говорят, что этоиспользуется для получения представлений действий, но я использовал его для получения представлений фрагментов (которых не было в действии), и он работал нормально.

В-третьих:

 @Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    listView = getView().findViewById(R.id.listview);
}

1 Ответ

1 голос
/ 07 ноября 2019

Три метода хороши. В onCreateView вы создаете вид (!), Это действительно первый раз, когда вы можете использовать то, что вы надули. Затем вызывается onViewCreated с представлением, которое вы вернули в onCreateView. Вы можете напрямую использовать представление, заданное в качестве параметра, то же самое, что getView(). Мой совет - инициализировать переменные вашего пользовательского интерфейса здесь

Для onActivityCreated это лучшее место для изменения ваших элементов пользовательского интерфейса. Он вызывается, когда создание фрагмента завершено и когда фрагмент повторно присоединяется. Там вы можете использовать переменные, которые вы инициализировали ранее, без необходимости получать действие только для этой цели.

Android Activity and Fragment lifecycle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...