【发布时间】:2018-10-22 08:56:03
【问题描述】:
我有两个片段,例如。 FragA 和 FragB。 FragA 有一个 RecyclerView,其项目单击会将用户重定向到 FragB。在 FragB 中,用户更新了一个值,该值需要设置为 FragA 中的 TextView。但是我不想失去FragA的状态
我执行以下操作来切换片段。
Fragment fragment = new FragB();
fragment.setArguments(bundle);
FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.home_frame, fragment, m_userName).addToBackStack(null);
fragmentTransaction.commit();
在 FragB 中,我创建了一个包含更新信息的包:-
FragA mFragA = new FragA ();
Bundle args = new Bundle();
args.putParcelable("UpdatedText", "SomeText");
mFragA .setArguments(args);
getFragmentManager().beginTransaction().remove(this);
getFragmentManager().beginTransaction().add(R.id.container, mFragA).commit();
在上述情况下,FragA 的状态保持不变,但没有调用任何方法,因为 Fragment 没有重新创建。因此 textview 值不会更新。
如何使用来自 FragB 的信息更新 FragA 中 TextView 的值,同时保持 FragA 的状态?
感谢任何帮助。
【问题讨论】:
-
这些片段是否同时可见?
-
@Lucem 不,他们不是。所以基本上,我在 FragA 中有一个回收器视图,其项目单击会打开 FragB。因此,如果用户将回收站视图滚动到第 10 项以打开 FragB,点击 FragB 上的后退按钮应该让他回到回收站视图的第 10 位
标签: android android-fragments bundle state fragmenttransaction