質問:DialogFragmentから別のFragmentへのコールバックを作成するにはどうすればいいですか?私の場合、関与するアクティビティはDialogFragmentを完全に認識していないはずです。DialogFragmentからのフラグメントへのコールバック
は、私は私が
MyDialogFragmentがprotected OnClickListener listener;
public static DialogFragment newInstance(OnClickListener listener) {
DialogFragment fragment = new DialogFragment();
fragment.listener = listener;
return fragment;
}
のように見える。しかし、リスナーがするという保証はありません
DialogFragment dialogFrag = MyDialogFragment.newInstance(this);
dialogFrag.show(getFragmentManager, null);
を行うことができますいくつかの点で続い
public class MyFragment extends Fragment implements OnClickListener
を持って考えてみましょうDialogFragmentが一時停止した場合ライフサイクルを通じて再開します。フラグメント内の唯一の保証は、setArgumentsおよびgetArgumentsを介してBundleを介して渡されるものです。
public Dialog onCreateDialog(Bundle bundle) {
OnClickListener listener = (OnClickListener) getActivity();
....
return new AlertDialog.Builder(getActivity())
........
.setAdapter(adapter, listener)
.create();
}
しかし、私は活動イベントを待機する必要はありませんが、私はフラグメントを必要とする:
は、それがリスナーするかどうアクティビティを参照する方法があります。本当に、それはOnClickListenerを実装するJavaオブジェクトです。
DialogFragmentを介してAlertDialogを提示するFragmentの具体例を考えてみましょう。はい/いいえボタンがあります。どのようにしてこれらのボタンを作成したフラグメントに戻すことができますか?
「あなたはDialogFragmentが一時停止してから再開する場合にリスナーが周囲にいるという保証はありませんifecycle。私は、フラグメント状態がonDestroy()の間に破壊されると思いましたか?あなたは正しくなければなりませんが、断片化状態をどのように使用するのかちょっと混乱しています。あなたが言った問題を再現するにはどうしたらいいですか? – Sean
代わりにDialogFragmentの 'OnClickListener listener =(OnClickListener)getParentFragment();'を単に使うことができない理由は分かりません。 – kiruwka
これは無関係の質問への答えですが、これはきれいな方法でこれがどのように行われるかを示していますhttp://stackoverflow.com/questions/28620026/implement-dialogfragment-interface-in-onclicklistener/33713825#33713825 – user2288580