【Android】FragmentでsetArgument()を使った値の受け渡し

Fragmentでのコンストラクタの引数によるFragmentへの値の受け渡しは推奨されていないのでBundleにラップして情報をFragmentクラスへ受け渡すsetArguments()を使用します。

なぜsetArguments()を使用するかは、参考サイトに詳しく載っていたので、ご覧下さい。

値の設定


setArguments()で値を設定します。

public static CategoryQuizFragment newInstance(String param) {
    CategoryQuizFragment fragment = new CategoryQuizFragment();
    Bundle args = new Bundle();
    args.putString("data", "データ");
    fragment.setArguments(args);
    return fragment;
}

値の取得


getArguments()を使用して値を取得します。

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_category_quiz, container, false);

    Log.v("dataを表示", getArguments().getString("data"));

    return view;
}

参考サイト:

Y.A.M の 雑記帳: Android Fragment で setArguments() してるサンプルが多いのはなぜ?

【Android 実装の罠 #1】 Fragment#setArguments() | Developers.IO

フラグメントへの値の受け渡し | Android-Note

Android - ActivityのExtraやFragmentのArgumentを設定する責務は、呼び出される側に持たせたほうがいいんじゃねーのという提案 - Qiita