Android片段在后退过渡

时间:2017-05-17 04:59:03

标签: java android android-fragments

我有一些片段,我试图理清它们之间的过渡。我可以从 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");

1 个答案:

答案 0 :(得分:1)

在按钮上,单击从堆栈中弹出当前片段 C ,而不是在堆栈中再次添加 B 。因此,使用以下代码行替换onClick代码上的按钮:

getFragmentManager().popBackStack();
将数据传输到下一个屏幕时使用

Bundle。要将数据传输到上一个屏幕,您需要使用回调。

供参考,请参阅以下附件链接:Communicating with Other Fragments