gpt4 book ai didi

java - 向后过渡时的 Android fragment

转载 作者:行者123 更新时间:2023-12-02 13:09:13 24 4
gpt4 key购买 nike

我得到了一些 fragment ,我试图理清它们之间的过渡。我可以从Main -> A -> B -> C开始。然后,一旦我完成了C中的内容,我想返回B -> A -> Main。这是我想要实现的理想转变。

但是,使用我当前的代码,转换会出现一些奇怪的情况。我从 Main -> A -> B -> C 进入,然后在 C 中我正在执行一些 SQL 在数据库中创建数据,一旦完成,我就返回到B。但是,从那里开始,当我按下后退按钮时,它会返回到 C -> B -> A -> Main。向后过渡中有不必要的 C

在我的Main中,我像这样调用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");

最佳答案

单击按钮时,将从堆栈中弹出当前 fragment ,即 C ,而不是在堆栈中再次添加 B 。因此,将按钮 onClick 代码替换为以下代码行:

getFragmentManager().popBackStack();

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

作为引用,请参阅以下附加链接:Communicating with Other Fragments

关于java - 向后过渡时的 Android fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44015960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com