В чем разница между 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);
}