Манипуляции с обратным стеком фрагмента

Я хотел бы добавить фрагмент в задний стек в последовательности f1,f2,f3... если я перехожу от f3 или f2, я должен достичь f1, тогда в заднем стеке ничего нет. этот код, который я использую:

public void openFragment(BaseFragment baseFragment, Bundle data) {

    if (baseFragment != null) {

        if (data != null)
            baseFragment.setArguments(data);
        Log.d(TAG, "openFragment" + baseFragment);

        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction ft = fragmentManager.beginTransaction();

        String tag1 = getString(baseFragment.getTitleResourceId());

        ft.replace(R.id.fragment_main, baseFragment, tag1);
        ft.addToBackStack(null);
        ft.commit();

        if (baseFragment.getTitleResourceId() > 0)
            mCurrentTitle = baseFragment.getTitleResourceId();

    }

}

Я пытался использовать следующее, но никак:

public void openFragment(BaseFragment baseFragment, Bundle data) {

    if (baseFragment != null) {

        if (data != null)
            baseFragment.setArguments(data);
        Log.d(TAG, "openFragment" + baseFragment);

        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction ft = fragmentManager.beginTransaction();

        String tag1 = getString(baseFragment.getTitleResourceId());

        // Fragment frgExist = fragmentManager.findFragmentByTag(tag1);
        ft.replace(R.id.fragment_main, baseFragment, tag1);
        // if (frgExist == null)

        ft.addToBackStack(null);
        ft.commit();

        if (baseFragment.getTitleResourceId() > 0)
            mCurrentTitle = baseFragment.getTitleResourceId();

    }

}

*BaseFragment - это просто абстрактный класс, расширяющий фрагмент, который устанавливает заголовок. Спасибо.


person aselims    schedule 06.06.2014    source источник
comment
Пожалуйста, задайте ВОПРОС, ваша проблема недостаточно ясна =)   -  person An-droid    schedule 06.06.2014


Ответы (1)


Изменить

Используйте это для добавления задняя часть. В качестве параметра вы указываете строку, например: "FirstFragment". Затем вы используете это чтобы вытолкнуть стопку. Вы можете указать строку в качестве параметра, тогда эта строка должна быть «FirstFragment». Таким образом, вы выталкиваете все до своего первого фрагмента.


Попробуйте добавить в бэкстек только первый (от f1 до f2). Если я прав, это всегда будет возвращаться к f1, даже если вы находитесь в f3, потому что у вас нет ссылки на транзакцию между f2 и f3.

person Kevin van Mierlo    schedule 06.06.2014