gpt4 book ai didi

android - 返回到 Android 中 onBackPressed 上的上一个 fragment

转载 作者:行者123 更新时间:2023-11-30 00:53:33 25 4
gpt4 key购买 nike

我是 Android 开发的新手,正在使用 Android 的默认抽屉导航布局开发应用程序。

我在应用程序中使用 fragment 。

当在下一个 fragment 上按下后退按钮时,我想回到上一个 fragment 。onBackPress 必须实现以下功能

  1. 在下一个 fragment 时回到上一个 fragment
  2. 当抽屉导航打开时关闭抽屉
  3. 在 fragment1 中按两次后退退出应用

这是我在 MainActivity 中的代码 在创建新 fragment 时

// replacing the fragment
if (fragment != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.commit();
}

onBackPress

@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else if (getFragmentManager().getBackStackEntryCount() > 0) {
FragmentManager fm = getSupportFragmentManager();
fm.popBackStack();
} else {
super.onBackPressed();
}
}

但这不起作用,按下后退退出应用程序,除非抽屉导航打开它关闭。

最佳答案

您没有将 fragment 添加到后台堆栈。你只需要做

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

并且由于 Backstack 实际上是由后退按钮处理的,因此您不需要在 onBackPressed() 中处理这种情况,因此您可以将其更改为:

@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}

关于android - 返回到 Android 中 onBackPressed 上的上一个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40550331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com