当我按下“后退”按钮(在模拟器和Galaxy S2上都进行了测试)时,无论提交了多少片段事务,applciation都会关闭:(
好的,为了以防万一,我会发布片段交易的实现,虽然我怀疑它们是问题
@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。如果您需要其他信息,请在评论中告诉我们。
感谢您的时间和精力。干杯
P.S。有意思的是,当我调用DialogFragment时,即使没有AddToBackStack(null)方法,按下“返回”按钮也会返回调用它的片段并且不会关闭应用程序...
答案 0 :(得分:0)
改变这一点:
ft.replace(R.id.okvir, fragment);
ft.addToBackStack(null);
ft.commit();
对此:
ft.replace(R.id.okvir, fragment,"TAGNAME");
ft.addToBackStack("TAGNAME");
ft.commit();
如果你有更多的问题,我是来自以色列的希望,希望能帮助我 omlrc1991@gmail.com