【问题标题】:Transfer data from one fragment to another fragment将数据从一个片段传输到另一个片段
【发布时间】:2017-06-27 10:04:48
【问题描述】:

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

【问题讨论】:

标签: android android-fragments fragment android-fragmentactivity


【解决方案1】:

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


    }
}

【讨论】:

    【解决方案2】:

    在第一个片段中..

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

    【讨论】:

    • 有没有使用适配器类?
    • No ...它是两个片段之间数据传输的 jst 示例。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-20
      • 2015-01-14
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 2016-06-12
      相关资源
      最近更新 更多