gpt4 book ai didi

android - 按后退按钮返回 Fragments

转载 作者:搜寻专家 更新时间:2023-11-01 08:54:28 25 4
gpt4 key购买 nike

我想通过按后退按钮返回到另一个 fragment 。我已经读到,addToBackStack (String tag) 应该有帮助,但它并没有真正起作用。

这是我在切换 fragment 时所做的。

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
ft.replace(R.id.content_frame, new MainFragment());
ft.addToBackStack("Mainfragment");
ft.commit();

现在,Fragment 打开,并启动一个 AsyncTask,其中出现一个加载圆圈。加载后显示数据。当我现在按下后退按钮一次时, fragment 会返回到创建加载圆的 AsyncTask 的开头。但是 AsyncTask 不会继续。当我再次按下后退按钮时,应用程序关闭。

我尝试添加 onBackPressed 但它只是告诉我,这在 fragment 中不起作用。去这里的最佳方式是什么?

编辑澄清:没有错误。它只是不工作。就像我什至没有 addToBackStack 这行 –

最佳答案

我之前遇到过同样的情况,最后我得到了这个解决方案。添加或替换 Fragment 时,需要将其添加到具有唯一名称的 backStack 中。然后,当按下后退按钮时,您可以在创建 fragment 的 FragmentActivity 中使用下面的方法查看哪个 fragment 是 Activity fragment 。

private String getCurrentFragmentName() {

int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount();

String fragmentName;

if (backStackEntryCount > 0) {
fragmentName = getSupportFragmentManager().getBackStackEntryAt(backStackEntryCount - 1).getName();
} else {
fragmentName = "";
}

return fragmentName;
}

并在 onKeyDown() 方法中执行以下操作。

    if (keyCode == KeyEvent.KEYCODE_BACK && getCurrentFragmentName().equals("your fragment name")) {
// Handle back press for this case.
return true;

} else if (keyCode == KeyEvent.KEYCODE_BACK
&& getCurrentFragmentName().equals("your another fragment")) {

// Handle back press for another Fragment
return true;

} else {
return super.onKeyDown(keyCode, event);
}

这就是我用 backStack 添加 fragment 的地方

transaction.addToBackStack("Your Fragment Name");

关于android - 按后退按钮返回 Fragments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20052996/

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