В чем разница между getView() и getActivity()?

В чем разница между getView() а также getActivity()?

Я использовал оба метода, но не понимаю принципиальной разницы, даже методология использования также одинакова в Android:

ListView deliverItemList = (ListView) getView().findViewById(R.id.load_item_list);
ListView deliverItemList = (ListView) getActivity().findViewById(R.id.load_item_list);

Я предположил, что getView() может производить NullPointerExceptionподелитесь своими знаниями со мной и какой метод рекомендуется?

2 ответа

getActivity() возвращает Activity хостинг Fragment, в то время как getView() возвращает вид, который вы надули и вернули onCreateView, Последний возвращает значение != null только после onCreateView возвращается

Из документов Android:

getActivity () возвращает Activity, с которой в данный момент связан этот фрагмент, а getView() возвращает корневое представление для макета фрагмента (возвращаемого onCreateView(LayoutInflater, ViewGroup, Bundle)), если оно предусмотрено.

Итак, в вашем случае, с помощью следующей строки кода:

getView().findViewById(R.id.load_item_list);

Вы ищете представление в своем фрагменте, но используете следующую строку кода:

getActivity().findViewById(R.id.load_item_list);

Вы ищете представление в своей деятельности, где размещается ваш фрагмент.

От вашего вопроса, какой использовать, зависит. Если вы пытаетесь раздувать фрагмент, вам нужно накачать ваш xml в onCreateView, и, используя это раздутое представление, вы ищите свои представления следующим образом:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.your_layout, container, false);
    ListView lv = (ListView)v.findViewById(R.id.view_id);
}
Другие вопросы по тегам