Como o título diz, qual é a diferença entre uma caixa de diálogo ser descartada ou cancelada no Android?
193
Normalmente, uma caixa de diálogo é descartada quando seu trabalho é concluído e está sendo removido da tela. Uma caixa de diálogo é cancelada quando o usuário deseja sair da caixa de diálogo e pressiona o botão Voltar.
Por exemplo, você tem uma caixa de diálogo padrão Sim / Não na tela. Se o usuário clicar em Não, a caixa de diálogo será descartada e o valor de Não será retornado ao chamador. Se, em vez de escolher Sim ou Não, o usuário clicar em Voltar para sair da caixa de diálogo em vez de fazer uma escolha, a caixa de diálogo será cancelada e nenhum valor será retornado ao chamador.
dismiss
é algo que você precisa chamar explicitamente no seu código, geralmente para responder a um evento de clique em um botão no seuDialog
. Se preferir, você pode chamardismissDialog
oActivity
, que por sua vez chamarádismiss
oDialog
.O
cancel
método só é executado quando é explicitamente chamado no seu código ou quando o usuário pressiona o botão VOLTAR quando o cancelávelDialog
está aberto (como @Lee observou).Se você estiver usando a
DatePicker
, tudo isso ainda é o caso. Como o @Lee disse,DatePickerDialog.OnDateSetListener
apenas detecta quando o usuário escolhe uma data noDatePicker
.A Referência do desenvolvedor do Android fornece mais informações sobre
Dialog
s.fonte
cancel
método Existem dois ouvintes diferentes para alterar e cancelar.Dismiss
Chamar a dispensa remove a caixa de diálogo da tela. Este método pode ser chamado com segurança a partir de qualquer thread. Observe que você não deve substituir esse método para fazer a limpeza quando a caixa de diálogo for descartada; em vez disso, implemente-a no onStop .Cancel
Se você cancelar, cancela a caixa de diálogo. Isso é basicamente o mesmo que ligar para dispensar () , mas também chamará seu DialogInterface.OnCancelListener , se registrado.Hide
Este método oculta a caixa de diálogo, mas não a descarta.E para mais, veja aqui
fonte