getOwnerActivity gibt im benutzerdefinierten Dialogfeld null zurück

8

Ich schreibe ein benutzerdefiniertes Dialogfeld und versuche, einige Daten von seiner übergeordneten Aktivität abzurufen, bekomme aber immer null , wenn ich getOwnerActivity anrufe, könnte mir jemand sagen, warum das passiert ? Warum kann ich die Daten im DemoDialog anzeigen, während Daten von TestDialogActivity nicht angezeigt werden?

Vielen Dank im Voraus.

DialogTestActivity

%Vor%

DemoDialog

%Vor%     
eric2323223 25.09.2011, 01:59
quelle

4 Antworten

5

Wenn Sie über die Situation nachdenken, werden Sie verstehen warum. Wenn Sie new DemoDialog(this) aufrufen, führen Sie den gesamten Code im Konstruktor aus. Danach gibst du es von onCreateDialog zurück und Android macht seine Magie. Wenn Sie versuchen, den Besitzer vom Konstruktor zu bekommen, hat Android noch nicht gehakt, so dass Sie noch keinen Besitzer haben.

Sie können also beides tun:

%Vor%

Beachten Sie, dass die zweite Methode bevorzugt wird, weil

    
Sajid 25.09.2011, 02:23
quelle
17

Ich habe versucht, getOwnerActivity() method in allen möglichen Methoden von custom Dialog zu verwenden. Es gibt immer null zurück (Android 2.3). Dann habe ich den Quellcode überprüft und die Aktivität, die zurückgegeben wird, wird nur in setOwnerActivity(Activity activity) gesetzt, die nirgendwo aufgerufen wird. Wenn Sie möchten, dass getOwnerActivity() einen anderen Wert als null zurückgibt, müssen Sie Folgendes tun:

%Vor%     
Mario Kutlev 19.12.2012 16:01
quelle
1

Sie können Ihren benutzerdefinierten Dialog von AppCompatDialog erweitern und mit diesem Code auf Aktivitäten zugreifen:

%Vor%     
Mohammad Reza Norouzi 26.01.2017 19:01
quelle
0

Dies, unten, funktionierte für mich.

%Vor%

Dann verwende ich Aktivität anstelle von getOwnerActivity ().

    
jpmastermind 16.12.2014 12:07
quelle

Tags und Links