gpt4 book ai didi

Android Fragments - 处理后退按钮

转载 作者:太空狗 更新时间:2023-10-29 16:06:46 26 4
gpt4 key购买 nike

我正在从我的选项菜单中启动一些 fragment ,例如首选项 fragment 和对话框 fragment 。

当我打开首选项 fragment 并点击后退按钮时,整个 Activity 将关闭。对于按我预期工作的对话框 fragment ,情况并非如此。

有人可以解释为什么会发生这种情况吗?可接受的处理方式是什么? :)

启动首选项 fragment :

getFragmentManager().beginTransaction()
.add(android.R.id.content, new SettingsFragment())
.addToBackStack("settings")
.commit();

最佳答案

与我的回答相关here .

我对首选项 fragment 有完全相同的问题。看来大多数人必须放弃并改用偏好 Activity 。

您将遇到的第一个问题是在启动 fragment 时需要使用replace 而不是add。该代码应更改为如下所示:

getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.addToBackStack("settings")
.commit();

至于处理后退按钮,似乎“后退堆栈”不会通过系统 后退按钮自动触发。我的解决方案是从 onBackPressed 覆盖中手动弹出返回堆栈:

@Override
public void onBackPressed()
{
if (inSettings)
{
backFromSettingsFragment();
return;
}
super.onBackPressed();
}

每当我导航到我的首选项 fragment 时,我都会在 Activity 中将 inSettings bool 值设置为 true 以保留该状态。这是我的backFromSettingsFragment 方法的样子:

private void backFromSettingsFragment()
{
inSettings = false;
getFragmentManager().popBackStack();
}

关于Android Fragments - 处理后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12259117/

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