gpt4 book ai didi

android - addToBackStack 不起作用,关闭 Activity 而不是弹出 fragment

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

我有一个问题,但我无法在任何地方找到解决方案。

当我按下后退按钮时,我的应用程序没有返回到上一个 fragment ,而是关闭了 Activity。

我有一个显示 4 个 fragment 的 Activity :[1]、[2]、[3]、[4]。我可以使用操作栏在前 3 个 fragment 之间切换,我不想将它们添加到返回堆栈。

fragment [4] 是 fragment [3] 中所选项目的详细 View 。当我在 [4] 中按返回时,我想返回 fragment [3],而不是关闭应用程序。

转换是通过放置 fragment 的 Activity 以这种方式完成的:

private void replaceFragment(Fragment fragment, boolean toBackStack){

if(fragment != null){

FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container, fragment);

if(toBackStack)
fragmentTransaction.addToBackStack(null);

fragmentTransaction.commit();
}
}

除了从 [3] 到 [4] 的转换时,toBackStack 始终为 false。

如果我在每次转换中都将 toBackStack 传递给 true,则 Activity 无论如何都会关闭。

最佳答案

我遇到了同样的问题。具体来说,我正在实现一个 PreferenceFragment,我希望后退按钮返回到之前加载的 fragment 。

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

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

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

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

所以,如果你能够跟踪你在 Fragment [4] 中的状态并拦截后退按钮,你应该能够手动调用

getFragmentManager().popBackStack();

返回 fragment [3]。

注意:请记住,您需要将 Fragment [3] 添加到返回堆栈,不是 Fragment[4]。 (除非 [4] 转到 [5] 并且您也需要返回 [4]。)

关于android - addToBackStack 不起作用,关闭 Activity 而不是弹出 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16561653/

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