gpt4 book ai didi

android - 如何从 Activity 返回到上一个 fragment ?

转载 作者:可可西里 更新时间:2023-11-01 18:47:54 28 4
gpt4 key购买 nike

我有一个带有抽屉导航的应用程序,它正在切换 fragment 。从其中一个 fragment 中,我调用了一个新 Activity 。当我在此 Activity 中(在工具栏中)单击返回时,我想返回到上一个选定的 fragment ,但它却让我回到了第一个 fragment 。我正在将我的 fragment 添加到返回堆栈中,所以这应该不是问题。

这是我已经尝试过的:

我在第二个 Activity 中重写了 onBackPressed 方法,如下所示:

@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() == 0) {
this.finish();
} else {
getFragmentManager().popBackStack();
}
}

它不起作用。我还在 onsaveinstancestate 方法中保存了当前 fragment 的索引并检索它但结果相同。我还尝试始终将当前 fragment 放入变量中并尝试重新显示它,但它仍然不起作用。还有什么我可以尝试的吗?

有趣的事实:如果我在底部面板内按回,它实际上会返回到上一个 fragment 。

编辑:这是我执行此操作的代码:

 private void replaceFragment(Fragment fragment)
{
if (fragment != null)
{
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.replace(R.id.main_content, fragment)
.addToBackStack(null)
.commit();
}
}

如果 savedInstanceState 为空,我只添加第一个 fragment ,如下所示:

if (savedInstanceState == null) {
// first time
mTitle = getResources().getString(R.string.home);
replaceFragment(HomeFragment.newInstance());
}

是的,所有这些都是在 onCreate() 方法中完成的。

最佳答案

我遇到了同样的问题,已经解决了。你唯一需要做的就是覆盖 Activity 中的方法“onOptionsItemSelected”:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}

android.R.id.home 是菜单中的第一个 fragment 。

关于android - 如何从 Activity 返回到上一个 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31491093/

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