我有一些片段,我试图理清它们之间的过渡。我可以从 Main - > A - > B - > ç即可。然后,当我完成了 C 中的内容后,我想回到 B - > A - >主即可。这是我想要达到的理想转变。
然而,使用我当前的代码,转换有一些奇怪的东西。我从主要 - > A - > B - > C ,然后在 C 里面我正在做一些SQL来在数据库中创建数据,一旦完成,我会回到 B 。然而,从那里,当我按下后退按钮时,它返回 C - > B - > A - >主即可。后转换中有一个不必要的 C 。
在我的主要中,我正在呼叫 A :
final SettingActivity settingFragment = new SettingActivity();
ft.replace(R.id.frame,settingFragment);
ft.addToBackStack("tag");
ft.commit();
在我的 A 中,我这样称为 B :
FragmentTransaction it = getFragmentManager().beginTransaction();
it.replace(R.id.frame,categoryFragment);
it.addToBackStack("tag");
it.commit();
在我的 B 中,我这样称为 C :
FragmentTransaction et = getFragmentManager().beginTransaction();
et.replace(R.id.frame,editFragment);
et.addToBackStack("tag");
et.commit();
然后在我的 C 中,当我在数据库中成功插入记录时,我正在调用 B :
// button on click listener
new GetAllCategoriesAsyncTask(
new GetAllCategoriesAsyncTask.OnRoutineFinished() {
public void onFinish() {
Bundle bundle = new Bundle();
FragmentTransaction it = getFragmentManager().beginTransaction();
bundle.putSerializable("categorylist", GetAllCategoriesAsyncTask.categoryList);
categoryFragment.setArguments(bundle);
it.replace(R.id.frame,categoryFragment);
it.addToBackStack("tag");
it.commit();
}
}).execute();
然后在我的 B 中,我在onCreate()中获取这样的数据:
categoryList = (ArrayList<Category>) getArguments().getSerializable("categorylist");
答案 0 :(得分:1)
在按钮上,单击从堆栈中弹出当前片段 C ,而不是在堆栈中再次添加 B 。因此,使用以下代码行替换onClick代码上的按钮:
getFragmentManager().popBackStack();
将数据传输到下一个屏幕时使用 Bundle
。要将数据传输到上一个屏幕,您需要使用回调。
供参考,请参阅以下附件链接:Communicating with Other Fragments