Muszę przekazać kilka zmiennych do DialogFragment
, aby móc wykonać akcję. Eclipse sugeruje, że powinienem użyć
Fragment#setArguments(Bundle)
Ale nie wiem, jak korzystać z tej funkcji. Jak mogę go używać do przekazywania zmiennych do mojego okna dialogowego?
Odpowiedzi:
Za pomocą
newInstance
I zdobądź Args w ten sposób
Zobacz pełny przykład tutaj
http://developer.android.com/reference/android/app/DialogFragment.html
źródło
Kiedyś wysyłałem wartości z mojego widoku listy
Jak wysłać
Jak odebrać wewnątrz metodę onCreate () DialogFragment
// Przesyłanie Kotlin
// odbierz
źródło
Są więc dwa sposoby przekazywania wartości z fragmentu / aktywności do fragmentu okna dialogowego: -
Metoda 1:
Metoda 2:
źródło
jako ogólny sposób pracy z fragmentami, jak zauważył JafarKhQ, nie należy przekazywać parametrów w konstruktorze, ale z rozszerzeniem
Bundle
.wbudowaną metodą tego w
Fragment
klasie jestsetArguments(Bundle)
igetArguments()
.po prostu tworzysz paczkę ze wszystkimi
Parcelable
przedmiotami i wysyłasz je dalej.z kolei Twój Fragment dostanie te przedmioty do siebie
onCreate
i zrobi z nimi magię.sposób pokazany w
DialogFragment
linku był jednym ze sposobów zrobienia tego w wielokrotnie pojawiającym się fragmencie z jednym określonym typem danych i działa dobrze przez większość czasu, ale możesz to również zrobić ręcznie.źródło
W moim przypadku żaden z powyższych kodów nie
bundle-operate
działa; Oto moja decyzja (nie wiem, czy to poprawny kod, czy nie, ale w moim przypadku działa):źródło
Po prostu chcę pokazać, jak zrobić to, co powiedział @JafarKhQ w Kotlin dla tych, którzy używają kotlin, który może im pomóc i zaoszczędzić czas na temat:
więc musisz utworzyć obiekt towarzyszący, aby utworzyć nową funkcję newInstance
możesz ustawić dowolne parametry funkcji. za pomocą
możesz ustawić swoje argumenty.
Możesz teraz użyć
args.putSomthing
do dodania argumentów, które podajesz jako parametr w funkcji newInstance.putString(key:String,str:String)
na przykład dodać ciąg i tak dalejTeraz, aby uzyskać argument, możesz użyć
arguments.getSomthing(Key:String)
=> likearguments.getString("1")
tutaj jest pełny przykład
Teraz, jak stworzyć swoje okno dialogowe, możesz zrobić coś takiego w innej klasie
tak na przykład
źródło