当我按下“返回”按钮(在模拟器和 Galaxy S2 上测试)时,应用程序关闭,无论提交了多少片段事务:(
好的,以防万一,我会发布我的片段交易实现,尽管我怀疑它们是问题
@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。从 Fragment2 选项卡调用 FragmentResults。如果您需要更多信息,请在评论中告诉我。
感谢您的时间和精力。干杯
PS 有趣的是,当我调用 DialogFragment 时,即使没有 AddToBackStack(null) 方法,按下“返回”按钮也会返回到调用它的片段并且不会关闭应用程序......