Preciso passar algumas variáveis para DialogFragment
, para que possa executar uma ação. Eclipse sugere que eu deveria usar
Fragment#setArguments(Bundle)
Mas não sei como usar essa função. Como posso usá-lo para passar variáveis para minha caixa de diálogo?
Respostas:
Usando
newInstance
E pegue o Args assim
Veja o exemplo completo aqui
http://developer.android.com/reference/android/app/DialogFragment.html
fonte
Eu costumava enviar alguns valores do meu listview
Como enviar
Como receber dentro do método onCreate () de DialogFragment
// upload de Kotlin
// receber
fonte
Portanto, há duas maneiras de passar valores de fragmento / atividade para fragmento de diálogo: -
Método 1:
Método 2:
fonte
como uma forma geral de trabalhar com Fragments, como observou JafarKhQ, você não deve passar os parâmetros no construtor, mas com a
Bundle
.o método integrado para isso na
Fragment
classe ésetArguments(Bundle)
egetArguments()
.basicamente, o que você faz é configurar um pacote com todos os seus
Parcelable
itens e enviá-los.por sua vez, seu fragmento irá obter esses itens
onCreate
e fazer a mágica para eles.a maneira mostrada no
DialogFragment
link era uma maneira de fazer isso em um fragmento de várias aparências com um tipo específico de dados e funciona bem na maioria das vezes, mas você também pode fazer isso manualmente.fonte
No meu caso, nenhum dos códigos acima
bundle-operate
funciona; Aqui está minha decisão (não sei se é um código adequado ou não, mas funciona no meu caso):fonte
Só que eu quero mostrar como fazer o que disse @JafarKhQ em Kotlin para aqueles que usam o kotlin que podem ajudá-los e economizar tempo com o tema também:
então você tem que criar um objeto companheiro para criar uma nova função newInstance
você pode definir o parâmetro da função como quiser. usando
você pode definir seus args.
Agora você pode usar
args.putSomthing
para adicionar argumentos que forneceu como um prameter em sua função newInstance.putString(key:String,str:String)
para adicionar string por exemplo e assim por dianteAgora, para obter o argumento, você pode usar
arguments.getSomthing(Key:String)
=> likearguments.getString("1")
aqui está um exemplo completo
Agora, como criar sua caixa de diálogo, você pode fazer algo assim em outra aula
assim por exemplo
fonte