Ich starte ein DialogFragment
von meinem Fragment und höre ein Ereignis in MainActivity
, wenn die Schaltfläche in Dialog Fragment gedrückt wird.Listener wird nicht aufgerufen
Dies ist die Listener-Schnittstelle in DialogFragment
definiert:
public interface NewDialogListener {
public void onDialogPositiveClick(String data);
}
Instanziierungsanwendung den Hörer in 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;
}
den Hörer abfeuern, wenn positive Taste in DialogFragment
geklickt wird:
private DialogInterface.OnClickListener positiveButtonOnClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
mListener.onDialogPositiveClick("positive");
}
};
Und dann fange ich den Hörer in MainActivity
:
@Override
public void onDialogPositiveClick(String status) {
Fragment fragment = getVisibleFragment();
if (fragment instanceof NewListFragment) {
((NewListFragment)fragment).updateView();
}
}
Dies funktioniert, wenn ich nicht die Drehung der Vorrichtung ändert. Aber wenn ich die Rotation des Gerätes ändere und dasselbe noch einmal mache, erreicht die Steuerung nie onDialogPositiveClick
.
Was ändert sich, wenn das Gerät gedreht wird, was das verursachen könnte?
Wo setzen Sie positiveButtonOnClickListener auf? – lionscribe
Im 'DialogFragment'? – user1324887
Sie haben diesen Teil des Codes nicht veröffentlicht. – lionscribe