【发布时间】:2017-06-27 10:04:48
【问题描述】:
我正在开发一个使用底部导航栏的应用程序,因此我必须使用片段。在我的片段中,我实现了 Recycler 视图。所以我的问题是,当我点击一个回收站视图项目时,如何导航到另一个片段(位于底部导航栏的不同项目中)以及如何在两个片段之间传输数据。请帮忙。
【问题讨论】:
标签: android android-fragments fragment android-fragmentactivity
我正在开发一个使用底部导航栏的应用程序,因此我必须使用片段。在我的片段中,我实现了 Recycler 视图。所以我的问题是,当我点击一个回收站视图项目时,如何导航到另一个片段(位于底部导航栏的不同项目中)以及如何在两个片段之间传输数据。请帮忙。
【问题讨论】:
标签: android android-fragments fragment android-fragmentactivity
在 onClick() 期间通过 bundle 传递数据
这样
FragmentManager mFragmentManager;
FragmentTransaction mFragmentTransaction;
Bundle bundleobj = new Bundle();
bundleobj.putCharSequence("key", data);
Fragment2 fragobj = new Fragment2();
fragobj.setArguments(bundleobj);
mFragmentTransaction.addToBackStack(null);
mFragmentTransaction.replace(R.id.containerView, fragobj).commit();
在 Fragment2 类中:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle =getArguments();
if(null!=bundle) {
myData=bundle.getCharSequence("key");
}
}
【讨论】:
在第一个片段中..
Fragment fragment = new EditExamFragment();
FragmentManager fm = getActivity().getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.commit();
Bundle bundle = new Bundle();
bundle.putString("branch_id", mDataset.get(position).getiBranchId());
bundle.putString("exam_id",mDataset.get(position).getiExamId());
fragment.setArguments(bundle);
在第二个片段中获取值尝试下面的代码;
String branch_id, exam_id ;
final Bundle bundle = this.getArguments();
if (bundle != null) {
branch_id = bundle.getString("branch_id");
exam_id = bundle.getString("exam_id");
}
【讨论】:
在fragment1中的事件监听器之后添加以下代码
SecondFragmentName secondFragmentName = new SecondFragmentName();
Bundle args = new Bundle();
args.putString("key", "value");
secondFragmentName.setArguments(args);
getFragmentManager().beginTransaction().replace(R.id.content_frame, secondFragmentName).addToBackStack("Some string").commit();
在 Fragment2 中获取价值
String message = getArguments().getString("key");
【讨论】: