ActivityからDialogFragmentを呼び出して、onActivityResultで値の受け渡しする方法です。
DialogFragmentを呼び出す際にrequestCodeをセットする
DialogFragmentにRequestCodeを設定したい場合は、
setTargetFragment関数を使用します。
1 2 3 4 5 6 |
private void showDatePickerDialog() { FragmentManager fm = getFragmentManager(); BirthDayInputDialogFragment birthDayInputDialogFragment = BirthDayInputDialogFragment.newInstance(birthTime); birthDayInputDialogFragment.setTargetFragment(this, REQUEST_INPUT_BIRTHDAY); birthDayInputDialogFragment.show(fm, birthDayInputDialogFragment.getClass().getSimpleName()); } |
BirthDayInputDialogFragmentはDialogFragmentクラスを継承したクラスになります。
setTargetFragmentの第二引数にRequestCodeを設定しています。
続いて、BirthDayInputDialogFragmentの処理を見ていきます。
BirthDayInputDialogFragmentにはボタンがレイアウトされていて、
そのボタンが押下されたら、onActivityResult関数を呼び出す設定にしたいとします。
1 2 3 4 5 6 7 8 9 10 |
// button bind.buttonOk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.putExtra(SerializeIds.TIME_ID, time); getTargetFragment().onActivityResult(getTargetRequestCode(), RESULT_OK, intent); dismiss(); } }); |
まず、Intentに渡したいDataをセットします。
次に、getTargetFragment関数を呼び、先にセットした呼び出し元のonActivityResult関数を直接呼び出します。
これで、DialogFragment間でActivityResult関数を呼び出すことができました。