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