我的活动包括导航抽屉,当前在左侧菜单中有5个选项。全部以片段开头。

我正在寻找一种方法来保留所有片段的堆栈,因此当用户按下“后退”按钮时,他将移至上一个片段。

类似活动由抽屉菜单组成,抽屉菜单具有5个选项menu1,menu2,menu3,menu4,menu5,其对应的片段为F1,F2,F3,F4,F5。

用户按下menu1,将其转发到F1
然后按menu2,然后按menu4。

当用户位于F4并向后按时,应将其移至F2,而不是退出活动或应用程序。

如何实现和首选示例或示例代码。

我目前正在使用此代码,但对我没有帮助

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

最佳答案

我为您的查询找到了一些解决方法:


在代码中覆盖onBackPressed()
使用与后台维护相关的方法,其中包含您的所有片段事务

public void onBackPressed(){

FragmentManager fm = getFragmentManager();

    if (fm.getBackStackEntryCount() > 0) {

        Log.i("MainActivity", "popping backstack");

        fm.popBackStack();    // this will display last visible fragment
        getActinBar().setTitle(mTitle);    // save your title in some variable and restore here

    } else {

         Log.i("MainActivity", "nothing on backstack, calling super");

         super.onBackPressed();  // system will handle back key itself

    }

 }



参考答案:this

09-25 23:41