gpt4 book ai didi

java - 为什么 addToBackStack 没有填充 BackStack?

转载 作者:行者123 更新时间:2023-12-01 04:25:14 26 4
gpt4 key购买 nike

当我按下“后退”按钮(在模拟器和 Galaxy S2 上测试)时,无论提交了多少 fragment 事务,应用程序都会关闭:(

好吧,以防万一,我会发布我的 fragment 事务的实现,尽管我怀疑它们是问题所在

@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
Fragment fragment;
switch(tab.getPosition()) {
case(0):
fragment = new Fragment1();
break;
case(1):
fragment = new Fragment2();
break;
case(2):
fragment = new Fragment3();
break;
default:
fragment = new Fragment();
Toast.makeText(getBaseContext(), "Error", Toast.LENGTH_SHORT).show();
break;
}
Bundle args = new Bundle();
fragment.setArguments(args);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.okvir, fragment);
ft.addToBackStack(null);
ft.commit();
}

还有

public void searchResultsView(List<School> results) {
setResults(results);
FragmentResults searchFragment = new FragmentResults();
Bundle args = new Bundle();
searchFragment.setArguments(args);
getFragmentManager().beginTransaction().replace(R.id.okvir, searchFragment).addToBackStack(null).commit();
}

现在我将尝试提供有关该应用程序的技术详细信息,以便您可以找出阻碍它发展的因素(讽刺)。该应用程序有一个 Activity,正如您可以得出的结论,它利用 ActionBar 来初始化 TabHost。 ActionBar.TabHost 附加了三个选项卡,分别对应于 Fragment1、Fragment2、Fragment3。 FragmentResults 是从 Fragment2 选项卡调用的。如果您需要更多信息,请在评论中告诉我。

感谢您的时间和努力。干杯

附注有趣的是,当我调用 DialogFragment 时,即使没有 AddToBackStack(null) 方法,按“后退”按钮也会返回到调用它的 fragment 并且不会关闭应用程序...

最佳答案

更改此:

ft.replace(R.id.okvir, fragment);
ft.addToBackStack(null);
ft.commit();

对此:

ft.replace(R.id.okvir, fragment,"TAGNAME");
ft.addToBackStack("TAGNAME");
ft.commit();

我是来自以色列的 OMRI,希望对您有帮助,如果您有更多问题,请与我联系omlrc1991@gmail.com

关于java - 为什么 addToBackStack 没有填充 BackStack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18562120/

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