Sim, eu sei que existe o AlertDialog.Builder, mas estou chocado ao saber o quão difícil (pelo menos não é favorável ao programador) exibir uma caixa de diálogo no Android.
Eu costumava ser um desenvolvedor .NET e gostaria de saber se existe algum equivalente Android do seguinte?
if (MessageBox.Show("Sure?", "", MessageBoxButtons.YesNo) == DialogResult.Yes){
// Do something...
}
Respostas:
AlertDialog.Builder realmente não é tão difícil de usar. É um pouco intimidador no começo, com certeza, mas depois de usá-lo um pouco, é simples e poderoso. Eu sei que você disse que sabe usá-lo, mas aqui está apenas um exemplo simples:
Você também pode reutilizar
DialogInterface.OnClickListener
se houver outras caixas sim / não que devem fazer a mesma coisa.Se você estiver criando o Diálogo a partir de a
View.OnClickListener
, poderá usarview.getContext()
para obter o Contexto. Alternativamente, você pode usaryourFragmentName.getActivity()
.fonte
AlertDialog.Builder builder = new AlertDialog.Builder(getView().getContext());
Tente o seguinte:
fonte
The constructor AlertDialog.Builder(MainActivity.DrawerItemClickListener) is undefined
A resposta de Steve H é imediata, mas eis um pouco mais de informação: a razão pela qual as caixas de diálogo funcionam da maneira como funcionam é porque as caixas de diálogo no Android são assíncronas (a execução não para quando a caixa de diálogo é exibida). Por esse motivo, é necessário usar um retorno de chamada para lidar com a seleção do usuário.
Confira esta pergunta para uma discussão mais longa entre as diferenças no Android e .NET (no que se refere às caixas de diálogo): Dialogs / AlertDialogs: Como "bloquear a execução" enquanto a caixa de diálogo está ativa (estilo .NET)
fonte
Isso está funcionando para mim:
fonte
Perguntar a uma pessoa se ele deseja ligar ou não para a caixa de diálogo.
fonte
A resposta de Steves está correta, embora desatualizada com fragmentos. Aqui está um exemplo com FragmentDialog.
A classe:
Para iniciar a caixa de diálogo:
Você também pode permitir que a classe implemente
onClickListener
e use isso em vez de ouvintes incorporados.fonte
Obrigado Nikki, sua resposta me ajudou a melhorar uma existente simplesmente adicionando a ação desejada da seguinte forma
fonte
Em Kotlin:
fonte
Mostrar diálogo anonimamente como cadeia de comandos e sem definir outro objeto:
fonte
Todas as respostas aqui se resumem a códigos longos e não fáceis de ler: exatamente o que a pessoa que estava pedindo estava tentando evitar. Para mim, foi a abordagem mais fácil é empregar lambdas aqui:
Lambdas no Android exigem o plug-in retrolambda ( https://github.com/evant/gradle-retrolambda ), mas é extremamente útil na redação de códigos mais limpos.
fonte
Obrigado. Eu uso a API Nível 2 (Android 1.1) e, em vez de
BUTTON_POSITIVE
eBUTTON_NEGATIVE
eu tenho que usarBUTTON1
eBUTTON2
.fonte
1.Crie a mensagem, o título e o botão Positivo, Negativo do AlertDialog:
2.Agora encontre os dois botões em DialogInterface Clique em setOnClickListener ():
3.Para mostrar o diálogo de alerta:
Nota: Não esqueça a palavra-chave final com AlertDialog.
fonte
fonte
você pode implementar uma solução genérica para decisões e usar em outro caso, não apenas para sim / não e personalizar o alerta com animações ou layout:
Algo assim; primeiro crie sua classe para transferir dados:
depois de uma interface para retornar o resultado
Agora você pode criar utilitários para acessar facilmente (nesta classe, você pode implementar diferentes animações ou layouts personalizados para o alerta):
e a última chamada em atividade ou fragmento; você pode usar isso no seu caso ou em outra tarefa:
fonte
Você pode fazer isso tão facilmente no Kotlin:
fonte
Para Kotlin no Android ::
fonte
Implementação Kotlin.
Você pode criar uma função simples como esta:
e chame assim:
fonte