簡體   English   中英

如何將多個參數從單個活動傳遞到多個片段

[英]How to pass multiple parameters from Single Activity to multiple Fragments

假設我有一個

  • 1個活動,帶有一個名為subCategory的listView,
  • 3種不同的片段活動
    說明片段,功效片段和圖像片段
  • 和1個稱為DetailInformation Activity的活動,它將實現我擁有的所有3個片段。 子類別列表將在子類別活動列表視圖中列出。 當您從列表中選擇子類別時,將打開包含3個片段的DetailInformation活動。

問題類別列表活動

在此處輸入圖片說明

實現3個片段的詳細信息活動

在此處輸入圖片說明

  • DescriptionFragment將包含所選子類別的詳細描述
  • EfficacyFragment還包含有關所選子類別的一些信息
  • ImageFragment將包含問題的圖像。每當用戶選擇其他子類別時,顯示的信息也會有所不同。 我的問題是如何將所選子類別的3個參數(MainCategoryName,subCategoryName和問題名稱)傳遞給每個Fragment,以便每個片段都將顯示有關該子類別的信息。

我已經看到了不同的方法,例如使用包和使用接口,但我聽不懂它們。 所以我需要幫助的人!!!

您可以通過在片段中定義新實例來傳遞參數,如下所示:

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();

這樣嘗試

從您的活動班級發送數據:

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

接收片段類中的數據:

Bundle bundle=getArguments();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM