Kotlin synthetisches und benutzerdefiniertes Layout in DialogFragment

9

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.

    
Geob-o-matic 27.12.2015, 23:11
quelle

6 Antworten

1

Bewegen Sie Ihren Code von onActivityCreated nach onViewCreated method. So:

%Vor%

Ich habe tatsächlich nicht näher auf generierten Code geschaut und vielleicht gibt es einen Bug.

    
Ferenc Boldog 04.01.2016 18:32
quelle
1

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%     
Andrey Koretskyy 04.10.2017 09:44
quelle
1

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%     
Lucas Montano 06.03.2018 17:34
quelle
1

Ich habe einen Weg gefunden, der für benutzerdefinierte Dialoge funktioniert.

%Vor%     
Sabaat Ahmad 24.03.2018 21:29
quelle
0

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.

    
SUPERCILEX 18.03.2018 19:47
quelle
-1

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.

%Vor%     
Willi Mentzel 03.02.2018 16:00
quelle