gpt4 book ai didi

android - 将 Android fragment 保存在 Backstack 中

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:33 26 4
gpt4 key购买 nike

我正在处理 android fragment ,我无法将 fragment 保留在 backstack 中,即当我按下后退按钮时,它会将我推出启动 fragment 的 Activity,我想返回到 backpress 上的前一个 fragment 。

到目前为止,我已经尝试过了,但我无法将 fragment 保留在后台。

getActivity().getFragmentManager().beginTransaction()
.replace(R.id.mainContainer, searchResultsFragment)
.addToBackStack(null)
.commit();

最佳答案

在调用 commit() 提交事务之前,您应该像在提供的代码中那样将 fragment 添加到后台堆栈 addToBackStack(null)

然后覆盖onBackPressed()从栈中弹出 fragment

您面临的问题,您与 FragmentManager 进行交易

getActivity().getFragmentManager().beginTransaction()
.replace(R.id.mainContainer, searchResultsFragment)
.addToBackStack(null)
.commit();

但是你在 onBackPressed() 中使用 SupportFragmentManager

@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() > 0 ) {
getSupportFragmentManager().popBackStack();
}
}

要解决您的问题,您必须知道您匹配的 fragment 类型(在您的情况下为 searchResultsFragment)我的意思是它是扩展 fragment 还是支持 fragment

如果你扩展 fragment 支持

import android.support.v4.app.Fragment;

你应该在事务和 onBackPressed 中使用 getSupportFragmentManager()

如果你使用 fragment

import android.app.Fragment;

你应该在事务和 onBackPressed 中使用 getFragmentManager()

关于android - 将 Android fragment 保存在 Backstack 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34104594/

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