Sagen wir, ich habe dieses Layout:
%Vor%Und ich benutze es in einem DialogFragment:
%Vor%Wenn ich auf das Widget mit synthetischen verweisen:
%Vor%Ich habe diesen Fehler zur Laufzeit:
java.lang.NullPointerException: Versuch, die virtuelle Methode 'android.view.View android.view.View.findViewById (int)' für eine Nullobjekt-Referenz aufzurufen bei MyDialog ._ $ _ findCachedViewById (DepartmentChoiceDialog.kt: 0)
Ich verstehe nicht, wie man im Dialogfeld DialogFragment synthetisch verwendet. Es funktioniert gut in Fragment und Aktivität.
Bewegen Sie Ihren Code von onActivityCreated
nach onViewCreated
method.
So:
Ich habe tatsächlich nicht näher auf generierten Code geschaut und vielleicht gibt es einen Bug.
Die vorherige Antwort funktioniert nicht, da onViewCreated nicht aufgerufen wird, wenn Sie onCreateDialog verwenden. Sie sollten zuerst kotlinx ... department_chooser_dialog. anzeigen .dep_list importieren und dann wie folgt verwenden:
%Vor%Wechseln Sie zu onCreateView Implementierung
%Vor%und verwenden Sie einen benutzerdefinierten Titel (TextView) und Abbrechen (Button) im department_chooser_dialog
onActivityCreated wird nach onCreateView ausgeführt und ist in Ordnung.
%Vor%Ich habe einen Weg gefunden, der für benutzerdefinierte Dialoge funktioniert.
%Vor%Es sieht so aus, als ob dies noch nicht standardmäßig unterstützt wird, aber ich habe den einfachsten Weg gefunden, es so zu machen. In einer Basisdialogklasse:
%Vor%In einer Unterklasse:
%Vor% Dann können Sie die synthetischen Ansichten wie gewohnt verwenden und containerView
als Ansicht für Ihren Dialog verwenden.
Die Ansichten sind über die Ansicht zugänglich, die Sie in onCreateDialog
aufblasen. Wenn Sie also die Ansicht in einer Variablen ( rootView
) speichern, können Sie auf die Ansichten von einer beliebigen Methode innerhalb von YourDialogFragment
zugreifen.
Tags und Links android kotlin kotlin-android-extensions