【发布时间】:2015-09-27 22:24:04
【问题描述】:
我有一个片段 A 和一个片段 B。 片段 A 从 2 个不同的屏幕(也是片段)调用。
现在,片段 A 在调用时使用 setArguments(bundle) 将参数传递给片段 B。
像这样:(这些行写在片段A中)
Bundle bundle = new Bundle();
bundle.putString("bookId", bookListItems.get(position).getBookId());
bundle.putString("bookName", bookListItems.get(position).getBookName());
Fragment b = new B();
b.setArguments(bundle);
replaceFragment(b, bundle);
而replaceFragment函数如下:
private void replaceFragment (Fragment fragment, Bundle bundle) {
String backStateName = fragment.getClass().getName();
FragmentManager manager = mActivity.getFragmentManager();
boolean fragmentPopped = manager.popBackStackImmediate (backStateName, 0);
if (!fragmentPopped) { //fragment not in back stack, create it.
FragmentTransaction ft = manager.beginTransaction();
ft.replace(R.id.frame_container, fragment);
ft.addToBackStack(backStateName);
ft.commit();
} else {
fragment.getArguments().putString("bookId", bundle.getString("bookId"));
fragment.getArguments().putString("bookName", bundle.getString("bookName"));
}
}
现在,问题是,当从屏幕 1 调用片段 A 时,它工作正常并将正确的参数传递给片段 B。但是当从屏幕 2 调用它时,传递给 B 的参数永远不会更新,它总是打开向上片段 B 的最后一个状态。
请帮忙。
【问题讨论】:
标签: android android-fragments android-studio