Почему FragmentManager BackStackEntry равен 0, хотя я выполняю addToBackStack (null) - PullRequest
0 голосов
/ 16 мая 2018
private BaseFragment fragment;
private FragmentManager fragmentManager;
private FragmentManager fragmentManager1;
private FragmentTransaction aFragmentTransaction;

Это код в моем методе OnCreate ():

fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, 
fragment).commit();
fragmentTitle = getResources().getString(fragment.getFragmentTitle());
setTitle(fragmentTitle);

.... Еще немного кода ...

aFragmentTransaction = fragmentManager.beginTransaction();
aFragmentTransaction.replace(R.id.frame_container, fragment);
aFragmentTransaction.addToBackStack(null);
aFragmentTransaction.commit();
setTitle(getResources().getString(fragment.getFragmentTitle()));

Этот код водно и то же действие в методе OnBackPressed ():

@Override
public void onBackPressed(){

fragmentManager1 = getSupportFragmentManager();
if (fragmentManager1.getBackStackEntryCount() > 0) {
    fragmentManager1.popBackStack();
} else {
    super.onBackPressed();
}

Оба находятся в одном действии.При отладке BackStack содержит 0 элементов.

РЕДАКТИРОВАТЬ: после выполнения aFragmentTransaction.addToBackStack (null) BackStack по-прежнему остается нулевым

1 Ответ

0 голосов
/ 16 мая 2018

Потому что вы заменили его, а не добавили.сделать так:

aFragmentTransaction.add(R.id.frame_container, fragment);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...