Tenho alguns fragmentos que precisam mostrar um diálogo regular. Nessas caixas de diálogo, o usuário pode escolher uma resposta sim / não e, em seguida, o fragmento deve se comportar de acordo.
Agora, a Fragment
classe não tem um onCreateDialog()
método para sobrescrever, então acho que tenho que implementar os diálogos fora, no contêiner Activity
. Está tudo bem, mas então a Activity
necessidade de relatar a resposta escolhida de alguma forma para o fragmento. Eu poderia, é claro, usar um padrão de retorno de chamada aqui, de modo que o fragmento se registrasse Activity
com uma classe de ouvinte e a Activity relataria a resposta por meio disso, ou algo parecido.
Mas isso parece ser uma grande bagunça para uma tarefa simples como exibir um diálogo sim-não "simples" em um fragmento. Além disso, dessa forma meu Fragment
seria menos independente.
Existe alguma maneira mais limpa de fazer isso?
Editar:
A resposta a esta pergunta não explica em detalhes como se deve usar DialogFragments para exibir caixas de diálogo de Fragments. Então, AFAIK, o caminho a seguir é:
- Exibir um fragmento.
- Quando necessário, instancie um DialogFragment.
- Defina o Fragment original como o destino deste DialogFragment, com
.setTargetFragment()
. - Mostre o DialogFragment com .show () do Fragment original.
- Quando o usuário escolhe alguma opção neste DialogFragment, notifique o Fragment original sobre esta seleção (por exemplo, o usuário clicou em 'sim'), você pode obter a referência do Fragment original com .getTarget ().
- Dispense o DialogFragment.