如何将多个参数从“单个活动”传递到多个片段

时间:2018-07-07 13:27:22

标签: android android-fragments

假设我有一个

  • 1个活动和一个名为subCategory的listView
  • 3种不同的片段活动
    说明片段, 功效片段和 ImagesFragment
  • 和1个称为DetailInformation Activity的活动,它将实现我拥有的所有3个片段。 子类别列表将在子类别活动列表视图中列出。 当您从列表中选择子类别时,将打开包含3个片段的DetailInformation活动。

问题类别列表活动

enter image description here

实施3个片段的详细信息活动

enter image description here

  • DescriptionFragment将包含所选子类别的详细描述
  • EfficacyFragment也包含有关所选子类别的一些信息
  • ImageFragment将包含问题的图像 每当用户选择其他子类别时,显示的信息也会有所不同。 我的问题是如何将所选子类别的3个参数(MainCategoryName,subCategoryName和问题名称)传递给每个Fragment,以便每个片段都将显示有关该子类别的信息。

我看到了不同的方法,例如使用捆绑软件和使用界面,但我听不懂。所以我需要帮助的人!!!

2 个答案:

答案 0 :(得分:1)

您可以通过在片段中定义新实例来传递参数,如下所示:

public class FragmentA extends BaseFragment {

View view;
PreferencesManager pm;

@BindView(R.id.textview1)
TextView textView1;


public static FragmentA newInstance(String param1,String param2,String param3) {

    Bundle args = new Bundle();
    FragmentA fragment = new FragmentA();
    args.putString("param1", param1);
    args.putString("param2", param2);
    args.putString("param3, param3);
    fragment.setArguments(args);
    return fragment;
}


@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    if (view == null) {
        view = inflater.inflate(R.layout.fragment_a, container, false);
        ButterKnife.bind(this, view);

        if (getArguments().size() > 0) {
            param1= getArguments().getString("param1");
            param2= getArguments().getString("param2");
            param3= getArguments().getString("param3");

        }
    }
    return view;
}

}

这是您替换片段的方式:

getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.fragment_main, FragmentA.newInstance(param1,param2,param3))
                .addToBackStack(null)
                .commit();

答案 1 :(得分:0)

尝试这样

发送活动类中的数据:

YourFragment fragment = new YourFragment (); fragment.setArguments(data);

接收片段类中的数据:

Bundle bundle=getArguments();