【发布时间】:2014-01-07 22:56:49
【问题描述】:
我正在编写一个使用FrameLayout 和Fragments 作为组件的android 应用程序。
我有 3 个片段:CommunityFragment、TaskFormFragment、TaskFragment。
在 CommunityFragment 中,用户按下按钮来创建任务。然后 TaskFromFragment 替换为 FrameLayout 中的 CommunityFragment with addToBackStack。因为在那之后,我想用返回按钮返回 CommunityFragment。
在 TaskFormFragment 中,用户按下创建按钮来创建任务。然后 TaskFragment 打开 没有 addToBackStack 因为我不想在按下后退按钮时显示 TaskFormFragment。
所有这些都完美无缺。当我在 TaskFragment 中按下返回按钮时,会显示 CommunityFragment。但是,在那之后,如果我打开 TaskFormFragment 并按返回按钮,它不会显示 CommunityFragment!相反,它会打开 TaskFragment。
这怎么会发生?这是我的片段转换代码:
从 CommunityFragment 到 TaskFormFragment:
TaskFormFragment newFragment = new TaskFormFragment();
Bundle args = new Bundle();
args.putLong("taskTypeId", taskTypeId);
args.putLong("communityId", community.getId());
newFragment.setArguments(args);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.frame_container, newFragment);
transaction.addToBackStack(null);
transaction.commit();
从 TaskFormFragment 到 TaskFragment:
TaskFragment newFragment = new TaskFragment();
Bundle args = new Bundle();
args.putLong("taskId", task.getId());
newFragment.setArguments(args);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.frame_container, newFragment);
transaction.commit();
编辑:我在这篇文章中找到了解决方案:Problems with Android Fragment back stack
【问题讨论】: