Я хочу реализовать навигацию фрагментов, используя следующий код:Android вопрос фрагмент жизненного цикла с ActionBar
public abstract class BaseFragment extends Fragment {
private static String TAG = "BaseFragment";
private BaseFragmentActions baseFragmentActions;
@Override
public void onAttach(Context context) {
super.onAttach(context);
Activity activity = null;
if (context instanceof Activity){
activity = (Activity) context;
}
Log.i(TAG, "onAttach = ");
try {
baseFragmentActions = (BaseFragmentActions)activity;
} catch (ClassCastException e) {
}
Log.i("onAttach",""+(getBackStackCount()!=0));
baseFragmentActions.resetToolbarNavigation(getBackStackCount()!=0);
}
@Override
public void onDetach() {
super.onDetach();
Log.i("BaseFragment", "onDestroy = " + (getBackStackCount() - 1));
baseFragmentActions.resetToolbarNavigation((getBackStackCount() - 1) != 0);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
private int getBackStackCount() {
int b = getActivity().getSupportFragmentManager().getBackStackEntryCount();
Log.i("getBackStackEntryCount", "====== "+b);
return b;
}
public interface BaseFragmentActions {
public void resetToolbarNavigation(boolean backNavigationEnabled);
}
}
Все мои фрагменты расширить эту базовую активность. И в моей основной деятельности я реализовать BaseFragmentActions, и реализован этот метод:
@Override
public void resetToolbarNavigation(boolean backNavigationEnabled) {
Log.i("BaseActivity", "reset " + backNavigationEnabled);
getSupportActionBar().setDisplayHomeAsUpEnabled(backNavigationEnabled);
if (backNavigationEnabled) {
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("resetToolbarNavigation", "setNavigationOnClickListener");
onBackPressed();
}
});
} else {
initNavigation();
syncState();
}
}
Все отлично работает, но когда я изменить ориентацию экрана, мы получаем ошибку, getSupportActionBar = нуль. Это из-за того, что я называю присоединением. Как я могу исправить эту ошибку? Я попытался проверить, не getSupportActionBar не ноль. Я не получаю ошибку, но «вверх» стрелка заменила гамбургер ...
Посоветуйте, что вы можете сделать в этом случае. Также используйте ссылки для навигации по реализации таких фрагментов. Извините, если что-то неправильно написано, или я сделал грамматическую ошибку)).