Fragmentに値を渡す方法について紹介します.
ActivityではIntentを利用しましたが、FragmentではBundleが利用できます.
1.渡す側の実装
FragmentManager を利用してTransactionを実行する前に、Fragmentに対してBundleを設定します.
1 2 3 4 5 6 7 8 9 10 11 12 |
FragmentManager fgManager = getActivity().getSupportFragmentManager(); Fragment sampleFragment = new SampleFragment; Bundle args = new Bundle(); args.putLong(ARGS_USER_ID, userId); args.putString(ARGS_USER_NAME, userName); sampleFragment.setArguments(args); fgManager.beginTransaction() .add(R.id.container, sampleFragment) .commit(); |
上記実装例ではgetSupportFragmentManagerを利用していますが、SupportLibraryを利用しないのであれば代わりにgetFragmentManagerを利用してください.
ここではLong、Stringを渡していますが、 基本型以外にSerializableも渡せるため、渡せる値にはあまり制限は有りません.
2.受ける側の実装
FragmentのonCreateView内で、getArgumentsを行うことでBundleが取得できます.
後は、必要な値を1.の所で設定したキーを使って取り出せます.
1 2 3 4 5 6 |
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { userId = getArguments().getLong(MainActivity.ARGS_USER_ID); userName = getArguments().getString(MainActivity.ARGS_USER_NAME); |