gpt4 book ai didi

android - 使用后退按钮从 fragment 返回到主要 Activity

转载 作者:行者123 更新时间:2023-11-29 17:02:16 24 4
gpt4 key购买 nike

您好,我已经在应用程序抽屉中创建了 fragment ,现在当我按下 fragment 上的后退按钮时,它正在关闭应用程序。

Main activity的webView中已经存在一个onKeyDown。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (myWebView.canGoBack()) {
myWebView.goBack();
} else {
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);

对于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();
}

fragment 实现方法,

if (fragment != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_main, fragment);
ft.addToBackStack("close");
ft.commit();




}

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);

最佳答案

当您将 fragment 添加到某个容器或使用 xml 对其进行膨胀时,它不会添加到后台堆栈,因此,当发生“onBackPressed”时,它会抛出后台堆栈中的最后一个 Activity - 这是托管该 fragment 的 Activity ,因此退出应用程序。我认为这篇文章: Android: Fragments backStack

可以帮助你,它解释了如何将 fragment 事务添加到后台:

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(..............);
fragmentTransaction.addToBackStack("fragment transaction name, not required");
fragmentTransaction.commit();

关于android - 使用后退按钮从 fragment 返回到主要 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42416467/

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