проблема с заменой фрагмента обратного стека

У меня есть фрагменты в стеке, которые добавляются с помощью функции addtobackstack. Когда я добавляю фрагмент без использования функции addtobackstack, а затем нажимаю кнопку «Назад», backstack возвращается к неправильному фрагменту.

Например:

Фрагмент A заменяется с помощью addtobackstack

Фрагмент B заменен с использованием addtobackstack

Фрагмент C заменяется без использования addtobackstack

Фрагмент D заменяется с помощью addtobackstack

Когда я был во Фрагменте D и нажимал кнопку «Назад», я иду к Фрагменту А. Но я должен идти к Фрагменту Б.

Как я могу это исправить?

Спасибо,


person Ali Gürelli    schedule 19.02.2016    source источник


Ответы (1)


Поместите этот код в Activity, затем попробуйте.

За фрагментом следует Activity, поэтому, когда вы используете фрагмент с addToBackStack() с тегом или передаете null, фрагмент будет добавлен в стек с помощью FragmentManager.

Не обязательно добавлятьToBackStack(). прокомментируйте этот код или передайте null

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager .beginTransaction();
    fragmentTransaction .replace(R.id.fragment_container, YouNextFragment);
    fragmentTransaction .addToBackStack(null);
    fragmentTransaction .commit();

Когда вы нажимаете кнопку «Назад» в Activity FragmentManager автоматически всплывает последний добавленный фрагмент.

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {

            case android.R.id.home:                  
                if (getFragmentManager().getBackStackEntryCount() ==0) {
                    finish();
                }else{
                    getFragmentManager().popBackStack();
                }
                break;

            default:
                break;
        }

        return super.onOptionsItemSelected(item);
    }
person Ajinkya    schedule 19.02.2016
comment
не могли бы вы объяснить, как этот код поможет достичь того, что задано в вопросе? - person Ankit Aggarwal; 19.02.2016
comment
я думаю, что этот ответ не о том, что я спросил :), но я попробую. Я не хочу добавлять конкретный фрагмент в стопку. Но вы сказали, что добавляете все фрагменты в стопку с нулевым параметром. - person Ali Gürelli; 19.02.2016