Abrufen von Wert aus EditText in DialogFragment

7

Ich gehe auf der Google-Seite für Android-Entwickler über Dialoge, insbesondere dieser Abschnitt . Anstatt jedoch die Nachricht von DialogFragment programmgesteuert zu erstellen, habe ich ein vordefiniertes Layout namens layout_newpayperiod.xml mit den folgenden Elementen erstellt:

%Vor%

Wenn ich das DialogFragment aufruft, wird es normal angezeigt, wobei der Spinner die richtigen Werte hat. Ich habe die Einträge ausgefüllt und "OK" gedrückt, aber wenn ich versuche, die Werte aus dem Spinner- und zwei EditText-Feldern abzurufen, schließt die App mit einem NumberFormatException: Invalid double "" . Ich habe das Gefühl, dass ich die Ansichten nicht richtig abrufe. Kann mir bitte jemand helfen? Danke!

%Vor%

}

In MainActivity.class die Callback-Methode:

%Vor%     
Argus9 06.05.2013, 21:38
quelle

2 Antworten

18

Versuchen Sie Folgendes:

%Vor%

... usw. (Rufen Sie alle anderen Ansichten aus dem Dialog ab, indem Sie die dialogView auf die gleiche Weise abfragen.)

Ihr Inflationscode "bläst" eine brandneue Version dieser Ansicht auf. Sie möchten auf dasjenige zugreifen, das im Dialog erstellt wurde.

    
Jay Bobzin 06.05.2013, 22:02
quelle
1

Ich denke, dass diese Zeile View transactionLayout = View.inflate(this, R.layout.layout_newpayperiod, null); alles vermasselt. Vielleicht ist es nicht verwirrend, aber Sie erhalten die Adresse des frisch erstellten Layouts und weisen es dem transactionLayout reference zu. Dann erhalten Sie Views von diesem Layout EditText paymentEt = (EditText) transactionLayout.findViewById(R.id.edittext_payment); , die sicherlich nicht initialisiert sind. Es hat einen Wert leer Zeichenfolge Wert - & gt; "";

Ich denke, Sie sollten findViewById verwenden, um einen Verweis auf Ihre EditText zu erhalten, wie Sie es mit Ihren TextViews machen. Aber da du in deinem MainActivity bist, welches Layout wahrscheinlich keine übergeordnete Ansicht deines R.layout.layout_newpayperiod ist, musst du einen Weg finden, das richtig zu machen.

Sie haben Ihren DialogFragment als Parameter in dieser onDialogPositiveClick Callback-Methode. Sie können also View und das von Ihnen gesuchte Layout erhalten, das die EditText-Dateien enthält

Es tut mir leid, diesen Beitrag so oft bearbeitet zu haben.

    
bpawlowski 06.05.2013 21:45
quelle