Вы можете звоните getActivity
от onCreateView
, так как он может вернуть null
, если Activity
еще не подключен к Fragment
.
Activities
и Fragments
имеют отдельные жизненные циклы, getActivity
может быть пустым, пока ваш фрагмент находится в процессе подготовки.
Вы можете переместить код в зависимости от getActivity
к обратному сообщению Fragment.onActivityCreated(Bundle). Обратите внимание, что он вызывается после onCreateView
.
Смотреть подробнее здесь: https://developer.android.com/guide/components/fragments.html#CoordinatingWithActivity
UPDATE: В соответствии с просьбой, вот фиксированный код - я просто разделить некоторые из ваших onCreateView метода в onActivityCreated
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
person = new Person();
str = person.getFragment();
view = inflater.inflate(R.layout.fragment_product_list, container, false);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
cd = new ConnectionDetector(getActivity());
parent = (AppCompatActivity) getActivity();
if (getArguments() != null) {
title = getArguments().getString("Title");
if (title != null) {
parent.getSupportActionBar().setTitle(title);
}
}
}
размещать крушении в трассировке стека – marmor
Извините, сэр я не имеет отчета о сбоях прямо сейчас. Потому что он бросает исключение в редком состоянии – John
parent.getSupportActionBar(). setTitle (title); В этой строке я получаю исключение из null-указателя, когда вернусь из другой активности – John