Очистка FragmentManager для .addToBackStack - PullRequest
0 голосов
/ 14 мая 2019

Могу ли я сделать это немного чище? Я знаю, когда query = "" Я нахожусь в главном меню, и поэтому обратно должен закрыть приложение.

        if (query == "") {
            fragmentManager.beginTransaction()
                    .replace(containerId, fragment, tag)
                    .commitAllowingStateLoss();
        } else {
            fragmentManager.beginTransaction()
                    .replace(containerId, fragment, tag)
                    .addToBackStack(null)
                    .commitAllowingStateLoss();
        }

Ответы [ 2 ]

1 голос
/ 31 мая 2019

Да, вы можете очистить свой фрагмент от действия один за другим, вот код ...

   public static void clearBackStack() {
        FragmentManager fm = mainActivity.getSupportFragmentManager();
        for (int i = 0; i < fm.getBackStackEntryCount(); ++i) {
             fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        }
    }
0 голосов
/ 04 июня 2019

Хорошо, это было лучше для меня. Хотя я ценю ответ выше.

    FragmentTransaction transaction = fragmentManager.beginTransaction();
    transaction.replace(containerId, fragment, tag);
     if (query != "") {
         transaction.addToBackStack(null);
     }
     transaction.commitAllowingStateLoss();
...