Ich habe diese android.app.DialogFragment
:Unerwartetes Verhalten Erstellen DialogFragment Instanz
public class MyDialog extends DialogFragment {
private Callback callback;
public static MyDialog newInstance() {
return new MyDialog();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog dialog = new AlertDialog.Builder(getActivity())
//set more things
.setPositiveButton("Ok", new DialogInterface.OnClickListener(){
callback.run(); //callback is null
}).create();
return dialog;
}
public void setCallback(Callback callback) { this.callback = callback; }
}
und aus meiner Tätigkeit:
MyDialog dialog = MyDialog.newInstance();
dialog.setCallback(myCallback);
dialog.show(getFragmentManager(), "dialog");
Aber wenn ich "Ok" klicken, stürzt beacuse Rückruf null
ist. myCallback ist nie null
Ich habe etwas gefunden. onCreateDialog
zweimal und das zweite Mal genannt callback
ist null
:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Log.d("test", "onCreateDialog (" + this + ") -> " + callback);
//more code
}
Er druckt:
onCreateDialog (MyDialog {18ea188e}) -> [email protected]
onCreateDialog (MyDialog {22199eaa}) -> null
Wie ist es möglich? Warum gibt es zwei verschiedene Instanzen? Warum wird onCreateDialog
zweimal angerufen?
können Sie Beiträge verfassen einen Stacktrace oder geben Sie die Zeile, in der die App abstürzt? –
Es stürzt in der 'callback.run()' Zeile in der Schaltfläche Listener ab. –
versuche Callback öffentlich zu machen und auch diese.callback.run(); – Nivedh