gpt4 book ai didi

android - ActionBarActivity 后退按钮不从后台弹出

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:21:18 24 4
gpt4 key购买 nike

我正在使用这个模板 https://github.com/kanytu/android-material-drawer-template只是为了尝试 material design,所以我实现了一些 fragment ,有些有 webview,有些没有。

我的问题是在 fragment 之间切换时我可以看到它们已成功添加到后台

getFragmentManager().beginTransaction().replace(R.id.container, new FAQ()).addToBackStack("FAQ").commit();

但是当我按下后退按钮时,它只会关闭应用程序。

当我将其更改为使用 Activity 而不是 ActionBarActivity 时,导航工作正常但我失去了一些其他功能。

后退按钮上有一个覆盖

@Override
public void onBackPressed() {
if (mNavigationDrawerFragment.isDrawerOpen())
mNavigationDrawerFragment.closeDrawer();
else
super.onBackPressed();
}

但即使删除了它,它仍然会发生。我认为问题出在 super.onBackPressed

的某处

有什么理由 ActionBarActivity 会破坏后退按钮吗?

最佳答案

我最近读了一篇关于这个的帖子,抱歉我找不到了......但基本上,它解释了后退按钮的主要功能是完成当前的Activity

其实根据the onBackPressed() official documentation :

Called when the activity has detected the user's press of the back key. The default implementation simply finishes the current activity, but you can override this to do whatever you want.

看起来即使在 5.0 之前后退按钮用于弹出后退堆栈,Google 也会使用新的 ActionBarActivity 改变这种行为。

就我而言,我使用了一些适合我的解决方法,但可能并不适合所有人,具体取决于您的导航实现。

但如果它对某人有帮助,这里是:

@Override
public void onBackPressed()
{
if (mDrawerLayout.isDrawerOpen()) {
mDrawerLayout.closeDrawer();
} else if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}

这样,ActionBarActivity.onBackPressed() 仅在后台堆栈为空时调用,在这种情况下它会破坏 ActionBarActivity

关于android - ActionBarActivity 后退按钮不从后台弹出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27029998/

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