как восстановить последний ListFragment из текущего фрагмента

Мое приложение имеет такую ​​структуру

MainActivity расширяет ActionBarActivity -- при нажатии кнопки -> ListFragment --при нажатии элемента списка --> Фрагмент

Находясь в Fragment и нажимая клавишу «Назад», он переходит непосредственно к MainActivity. Как я могу перейти к ListFragment

Ниже приведено то, что я ожидаю от него.

Фрагмент *----при нажатии клавиши "Назад"-->*ListFragment --при нажатии клавиши "Назад" ---> MainActivity расширяет ActionBarActivity

Следующий код - это то, что я использую в mainactivity и listfragment для запуска любого фрагмента.

.........................................

             case 5:

           fragment = new HomeFragment();       
            break;
        default:
            break;
        }

        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment).commit();

            // update selected item and title, then close the drawer
            mDrawerList.setItemChecked(position, true);
            mDrawerList.setSelection(position);
            //getSupportActionBar().setSubtitle(navMenuTitles[position]);
            //setTitle(navMenuTitles[position]);
            mDrawerLayout.closeDrawer(mDrawerList);
        } else {
            // error in creating fragment
            Log.e("MainActivity", "Error in creating fragment");
        }

ОБНОВЛЕНИЕ

Теперь я добавил следующий код в свой MainActivity

@Override
public void onBackPressed() {

       Fragment frag = getSupportFragmentManager().findFragmentById(R.id.frame_container);

       if((frag instanceof CommonMasjidPrayerTimes)) {
            finish();
        }
}

И следующий код к моему listfragment

FragmentManager fragmentManager = getActivity().getSupportFragmentManager();


                                //  fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
                            if (masjidNamazTimings != null) {
                                    FragmentTransaction ft = fragmentManager.beginTransaction();
                                    ft.addToBackStack(null);
                                    ft.replace(R.id.frame_container, masjidNamazTimings).commit();

                            }

Теперь, когда я нажимаю кнопку «Назад» на моем фрагменте списка или фрагменте, он не возвращается


person user3671032    schedule 25.06.2014    source источник
comment
Вы используете FragmentTransaction с правильными replace/addToBackStack/hide? возможно, вставьте какой-нибудь код.   -  person snowdragon    schedule 25.06.2014


Ответы (2)


Ваш код должен выглядеть так:

FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.frame_container, fragment).commit();
ft.addToBackStack(null);

Попробуй это. Это сработает.

person Y.S    schedule 25.06.2014
comment
Нужно ли мне также помещать это в ListFragment? - person user3671032; 25.06.2014
comment
вам нужно использовать ft.addToBackStack(null) для каждого Fragment, который вы хотите добавить в задний стек... если вы не вызовете ft.addToBackStack(null) для определенного Fragment, он не будет добавлен в задний стек. - person Y.S; 25.06.2014
comment
FragmentTransaction ft = fragmentManager.beginTransaction(); ft.addToBackStack(null);ft.replace(R.id.frame_container, фрагмент).commit(); - person user3671032; 25.06.2014

Разве это не пропало: .addToBackStack(null)? См. здесь

person snowdragon    schedule 25.06.2014