Atualmente, estou criando um aplicativo para Android e quero passar uma data entre atividade e fragmento. Minha atividade possui um botão que abre o fragmento: DatePickerFragment.
Na minha atividade, mostro uma data que quero modificar com o fragmento. Então, eu quero passar a data para o datepicker e enviá-la de volta para a atividade.
Eu tentei muitas soluções, mas nenhuma está funcionando. O caminho mais fácil passaria por uma discussão, mas isso não pode ser feito com fragmentos.
android
android-fragments
android-activity
Eugene Primako
fonte
fonte
Respostas:
Para passar informações para um fragmento , você defineArguments ao criá-lo e pode recuperar esse argumento posteriormente no método onCreate ou onCreateView do seu fragmento.
Na função newInstance do seu fragmento, você adiciona os argumentos que deseja enviar:
Depois, dentro do fragmento do método,
onCreate
ouonCreateView
você pode recuperar os argumentos como este:Se você deseja agora se comunicar do seu fragmento com a sua atividade (enviando ou não dados) , é necessário usar interfaces. A maneira como você pode fazer isso é explicada muito bem no tutorial de documentação da comunicação entre fragmentos. Como todos os fragmentos se comunicam por meio da atividade, neste tutorial, você pode ver como pode enviar dados do fragmento real para o contêiner de atividade dele para usar esses dados na atividade ou enviá-los para outro fragmento que sua atividade contém.
Tutorial de documentação:
http://developer.android.com/training/basics/fragments/communicating.html
fonte
Enviando dados de
Activity
para umFragment
Atividade:
Fragmento:
Lendo o valor no fragmento
Mas se você deseja enviar valores de Fragmento para Atividade, leia a resposta de jpardogo, precisa de interfaces, mais informações: Comunicação com outros Fragmentos
fonte
Parcelable
, mas que me deuclass cast exception
graças a @ ρяσѕρєя K e Terry ... isso me ajuda muito e funciona perfeitamente
Em Activity, você envia dados com a intenção de:
e no método Fragment onCreateView:
reference: Enviar dados da atividade para fragmentar no android
fonte
Use a biblioteca EventBus para passar o evento que pode conter sua variável e para trás. É uma boa solução, pois mantém suas atividades e fragmentos fracamente acoplados
https://github.com/greenrobot/EventBus
fonte
Para todos os desenvolvedores do Kotlin por aí:
Aqui está a solução proposta do Android Studio para enviar dados ao seu fragmento (= quando você cria um fragmento em branco com Arquivo -> Novo -> Fragmento -> Fragmento (em branco) e verifica "incluir métodos de fábrica de fragmentos").
Coloque isso no seu fragmento:
.apply
é um bom truque para definir dados quando um objeto é criado ou como eles afirmam aqui :Em sua atividade ou fragmento, faça:
e leia os argumentos em seu fragmento, como:
Para "enviar" os dados de volta à sua Atividade , basta definir uma função na sua Atividade e faça o seguinte no seu Fragmento:
Aproveite a magia do Kotlin!
fonte
Enviando dados da Atividade para Fragmentos Vinculados por XML
Se você criar um fragmento no Android Studio usando um dos modelos, por exemplo, Arquivo> Novo> Fragmento> Fragmento (lista), o fragmento será vinculado via XML. O método newInstance é criado no fragmento, mas nunca é chamado, portanto não pode ser usado para passar argumentos.
Em vez disso, na Atividade, substitua o método onAttachFragment
Em seguida, leia os argumentos no método fragmento onCreate conforme as outras respostas
fonte
Você pode simplesmente instanciar seu fragmento com um pacote:
fonte