当前位置: 首页 > 知识库问答 >
问题:

返回按钮按下处理程序

呼延辰龙
2023-03-14

我正在开发一个需要导航抽屉的应用程序 此应用程序有1个MainActivity和大约10个片段。当我单击MainActivity中的导航抽屉图标时,它将显示10个片段,以便我可以选择它们中的每一个。

我选择fragmentA,然后选择B,然后选择C。。。例如,到F。当我在fragmentF中并按下后退按钮时,它将带我返回fragmentE,然后再次返回fragmentD。。。我需要的是,当我按下片段中的后退按钮时,它需要转到导航抽屉中的默认主页。

我在SO上搜索,发现了1个类似的问题,但还没有答案,所以我不得不提出另一个问题


共有3个答案

谢鸿飞
2023-03-14

你试过了吗

try {  
   activity.getSupportFragmentManager().popBackStackImmediate(n‌​ull,FragmentManager.POP_BACK_STACK_INCLUSIVE);
   } catch (IllegalStateException e)
  { 
     e.printStackTrace();
  }
向子安
2023-03-14

我想你可以试试这个。将此添加到onBackPressed()

if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
        for (int i = 0; i < getSupportFragmentManager().getBackStackEntryCount(); i++) {
            getSupportFragmentManager().popBackStack();
        }
    } else {
        super.onBackPressed();

    }
戈安翔
2023-03-14

嗨,下面是我的解决方案,

我使用下面的代码来更改片段:

fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();

if (fragmentA == null)
    fragmentA = new FragmentA();

fragmentTransaction.replace(R.id.container, fragmentA);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commitAllowingStateLoss();

如果您使用的是support portFrapse,请使用getBackportFragmentManager()代替getFragmentManager()。

当你们在那个时候执行反压操作时,把下面的代码放进你们的活动中,它包含了片段。

@Override
public void onBackPressed() {
    super.onBackPressed();
    getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}

希望这个答案能帮助你解决问题。

 类似资料:
  • 在我的应用程序中,我想在按下后退按钮时退出应用程序,这是我的代码: 它工作正常,但当我退出应用程序时,它不会完全退出,并显示带有我的应用程序徽标的空白页面,当我再次按下后退按钮退出应用程序,我如何修复它??? 编辑: 我使用这个代码而不是上面的代码,但我的应用程序完全退出,但我希望它在后台运行并且不完全退出,我该怎么做?

  • 按下后退按钮,我试图从活动中退出应用程序。但问题是在按下返回键后,刷新相同的活动2到3次,进入登录活动,不退出应用程序。有人可以帮助解决这个问题。 以下是我必须尝试退出应用程序的方式。

  • 问题内容: 我正在使用pushState为网站上的Ajax内容创建有意义的URL。我想在用户单击前进或后退按钮时刷新Ajax内容。但是我遇到了问题,因为Chrome(正确)在“历史记录遍历”(前进/后退按钮)和“结束”(页面加载)上都暗示了onpopstate。我想创建一个区分页面加载和历史遍历的onpopstate处理程序,因为如果已经成功加载Ajax内容,我就不希望刷新它。有人可以帮助我区分两

  • 问题内容: 在我的应用程序中,我有两个活动。首先是启动屏幕,它仅显示应用程序名称和其他一些信息。单击初始屏幕活动后,我正在加载主要活动。我的应用程序运行正常,但遇到一个小问题。如果我从主要活动中按返回按钮,则控件将启动初始屏幕活动。但我不想再次显示启动画面活动,我想避免在按“后退”按钮时启动画面。 可能吗?如果可以,怎么办? 问题答案: 在文件中,在初始屏幕中添加属性。

  • 问题内容: 我会尽力解释这一点。 我有一个应用程序可以在页面上显示50多个项目。用户可以单击单个项目,然后转到页面以更新项目信息。一切工作正常,除了在用户完成更新单个项目信息并在浏览器上单击“后退”按钮到上一个按钮之后。旧项目信息(更新前)仍然存在。用户必须单击刷新才能查看更新的信息。不错,但我希望提供更好的用户体验。有解决这个问题的主意吗?非常感谢。 问题答案: 我认为您必须使用JS才能使此工作

  • 我是一个新手,我正在尝试创建一个应用程序来在我的投资组合中使用。本质上,该程序是一个可以访问不同菜单的菜单(json文件:texas_pick.js,Breakth.js…),该程序旨在以按钮的形式显示菜单选项,按钮的详细信息从各自的json文件中检索。我面临的问题是,单击菜单选项时,会检索最后一个菜单项的数据。我将后端编程为只将商品名称和价格推送到数据库,而前端则检索这些数据并将其显示在表上。检