Ich muss einige Variablen übergeben DialogFragment
, damit ich eine Aktion ausführen kann. Eclipse schlägt vor, dass ich verwenden sollte
Fragment#setArguments(Bundle)
Aber ich weiß nicht, wie ich diese Funktion verwenden soll. Wie kann ich damit Variablen an meinen Dialog übergeben?
Antworten:
Verwenden von
newInstance
Und hol die Args so
Das vollständige Beispiel finden Sie hier
http://developer.android.com/reference/android/app/DialogFragment.html
quelle
Ich habe einige Werte aus meiner Listenansicht gesendet
Wie senden
So empfangen Sie die onCreate () -Methode von DialogFragment
// Kotlin hochladen
// erhalten
quelle
Es gibt also zwei Möglichkeiten, Werte von Fragment / Aktivität an Dialogfragment zu übergeben: -
Methode 1:
Methode 2:
quelle
Als allgemeine Methode zur Arbeit mit Fragmenten sollten Sie, wie JafarKhQ feststellte, die Parameter nicht im Konstruktor übergeben, sondern mit a
Bundle
.Die in der
Fragment
Klasse integrierte Methode dafür istsetArguments(Bundle)
undgetArguments()
.Im Grunde genommen richten Sie ein Bündel mit all Ihren
Parcelable
Artikeln ein und senden sie weiter.Im Gegenzug erhält Ihr Fragment diese Gegenstände
onCreate
und zaubert sie.Die im
DialogFragment
Link gezeigte Methode war eine Möglichkeit, dies in einem mehrfach erscheinenden Fragment mit einem bestimmten Datentyp zu tun, und funktioniert die meiste Zeit einwandfrei. Sie können dies jedoch auch manuell tun.quelle
In meinem Fall
bundle-operate
funktioniert keiner der obigen Codes mit ; Hier ist meine Entscheidung (ich weiß nicht, ob es sich um richtigen Code handelt oder nicht, aber in meinem Fall funktioniert er):quelle
Nur dass ich zeigen möchte, wie man das macht, was @JafarKhQ in Kotlin gesagt hat, für diejenigen, die Kotlin verwenden , die ihnen helfen und auch Themenzeit sparen könnten:
Sie müssen also ein Begleitobjekt erstellen , um eine neue newInstance- Funktion zu erstellen
Sie können den Paremter der Funktion beliebig einstellen. mit
Sie können Ihre Argumente einstellen.
Sie können jetzt
args.putSomthing
Argumente hinzufügen, die Sie als Parameter in Ihrer newInstance-Funktion angeben.putString(key:String,str:String)
um zum Beispiel einen String hinzuzufügen und so weiterNun erhalten Sie das Argument, das Sie verwenden können
arguments.getSomthing(Key:String)
=> like verwendenarguments.getString("1")
Hier ist ein vollständiges Beispiel
Wie Sie nun Ihren Dialog erstellen, können Sie in einer anderen Klasse so etwas tun
so zum Beispiel
quelle