Использую несколько фрагментов, для которых есть отдельный тулбар. При добавлении тулбара подсвечивается в студии ошибка "activity.getSupportActionBar.setTitle() may produce java.nullpointerexeption". При этом фрагмент грузится, но все действия залипают, на другие фрагменты он не переходит. Прошу подсказать в чем ошибка?
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_three,container,false);
Toolbar profile_toolbar = (Toolbar)view.findViewById(R.id.profile_toolbar);
AppCompatActivity activity = (AppCompatActivity)getActivity();
activity.getSupportActionBar().setTitle("dgdfg");
return view;
}
UPD. Ошибка крылась в использовании FragmentTabHost, почему-то вид с фрагментом залипал на фрагменте с использование тулбара. Пришлось заменить FragmentTabHost на TabHost
Ответ
Это не ошибка, а предупреждение Android Studio т.к. при определенных условиях метод getSupportActionBar() может вернуть null и вот тогда уже случится NullPointerException в вашем приложении. Чтобы это исключить, достаточно выполнить проверку на null. Тогда и студия перестанет пугать этим сообщением.
ActionBar actionBar = activity.getSupportActionBar();
if(actionBar!= null) {
//какой то код
}
Из-за этого скорей всего и залипают ваши фрагменты, т.к. вы только нашли ToolBar, но не установили его, потому getSupportActionBar() возвращает null. Попробуйте сделать так:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_three,container,false);
Toolbar profile_toolbar = (Toolbar)view.findViewById(R.id.profile_toolbar);
AppCompatActivity activity = (AppCompatActivity)getActivity();
activity.setSupportActionBar(profile_toolbar);
ActionBar actionBar = activity.getSupportActionBar();
if(actionBar!= null) {
actionBar.setTitle("dgdfg");
}
return view;
}
Комментариев нет:
Отправить комментарий