私のフラグメントからDialogFragment
を起動し、ボタンをダイアログフラグメントで押すとMainActivity
のイベントをリッスンしています。リスナーが呼び出されていません
これはDialogFragment
で定義されたリスナーインタフェースです:
public interface NewDialogListener {
public void onDialogPositiveClick(String data);
}
がDialogFragment
でリスナーをインスタンス化:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// Verify that the host activity implements the callback interface
try {
// Instantiate the NoticeDialogListener so we can send events to the host
mListener = (NewDialogListener) activity;
} catch (ClassCastException e) {
// The activity doesn't implement the interface, throw exception
throw new ClassCastException(activity.toString()
+ " must implement NoticeDialogListener");
}
}
@Override
public AlertDialog onCreateDialog(Bundle savedInstanceState) {
currentActivity = getActivity();
newDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(positiveButtonViewOnClickListener);
...
return newDialog;
}
DialogFragment
の正ボタンがクリックされたときに、リスナーを発射:
private DialogInterface.OnClickListener positiveButtonOnClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
mListener.onDialogPositiveClick("positive");
}
};
そして、私はMainActivity
でリスナーをキャプチャ:
@Override
public void onDialogPositiveClick(String status) {
Fragment fragment = getVisibleFragment();
if (fragment instanceof NewListFragment) {
((NewListFragment)fragment).updateView();
}
}
私は、デバイスのローテーションを変更していない場合、これは動作します。しかし、デバイスの回転を変更して同じことをやり直すと、コントロールは決してonDialogPositiveClick
に届きません。
これが原因でデバイスが回転したときの変更点を教えてください。
ここで、positiveButtonOnClickListenerをリッスンするように設定していますか? – lionscribe
'DialogFragment'の中に? – user1324887
あなたはコードのその部分を投稿しませんでした。 – lionscribe