将数据从一个片段传输到另一个片段

时间:2017-06-27 10:04:49

标签: android android-fragments fragment android-fragmentactivity

我正在开发一个应用程序,其中我使用了底部导航栏,因此我必须使用片段。在我的片段中,我实现了Recycler视图。所以我的问题是,当我点击回收器视图的项目时,如何导航到另一个片段(位于底部导航栏的不同项目中)以及如何在两个片段之间传输数据。请帮助。

3 个答案:

答案 0 :(得分:2)

在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");


    }
}

答案 1 :(得分:1)

在第一篇片段中..

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");
}

答案 2 :(得分:1)

在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");