3 つのフラグメントを持つアクティビティを取得し、これらのフラグメントの 1 つから MyDialogFragment.show() メソッドを呼び出しています。ダイアログが表示されます。テキスト入力を行い、このテキスト入力をフラグメントに戻そうとします。ここまでは順調ですね。
set/getTargetFragment() 呼び出しと組み合わせて、「親」フラグメントの onActivityResult() を介してバックコミュニケーションをセットアップしました (以下のコードを参照)。そして、親フラグメントでその結果を取得しますが、一部のデータを渡すことができません。インテントを作成して余分なデータを入れようとするたびに失敗します。私が盲目なのかどうかはわかりません..でも、onClick() メソッド内でインテントを作成できるはずではありませんか?!
どんな助けでも大歓迎です!
私のダイアログフラグメント内:
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getParentFragment().getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.dialog_choose_title, null));
builder.setTitle(mTitle)
.setPositiveButton(R.string.dialog_save_title, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(getParentFragment().getActivity(), MyMainClass.class);
intent.putExtra("title", mEditText.getText().toString());
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, intent);
dismiss();
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
});
return builder.create();
}
私のフラグメント内:
public void onClick(View v) {
ChooseTitleDialog dialog = ChooseTitleDialog.newInstance(mTimerObject.getmTitle());
dialog.setTargetFragment(mThis, 42);
dialog.show(mFragmentMgr, "choose_title_dialog");
}