Olá pessoal,
Eu quero e preciso criar um metodo generico para confirmação de operações, pois uso muito aqui no sistema, consequentemente se não tiver um metodo generico fico replicando o mesmo código em todo o sistema.
Criei o método confirmacaoMsg, só que não consigo executá-lo com sucesso, pois ele retorna o valor antes do usuário clicar em sim ou não, consequentemente o if é executado antes da janela fechar e a outra mensagem é exibida antes da hora, o que eu preciso para que esse método seja funcional é retornar o valor apenas após o usuário clicar em sim ou não.
Alguém sabe me dizer como faço para alcançar tal objetivo?
Código da chamada:
int res = Mensagens.confirmacaoMsg(TelaInicial.this, "vc confirma?");
//O código do if esta sendo executado antes do usuario clicar em sim ou não
if (res == 1) {
Mensagens.informacaoMsg(TelaInicial.this, "Voce clicou em sim");
} else {
Mensagens.informacaoMsg(TelaInicial.this, "Operacao cancelada");
}
Código do método:
public static final int NAO = AlertDialog.BUTTON_NEGATIVE;
public static final int SIM = AlertDialog.BUTTON_POSITIVE;
/**
*
* @param context
* @param msg
*
*/
public static int confirmacaoMsg(Context context, String msg) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
//Define a mensagem
alertDialog.setMessage(msg);
//define o titulo
alertDialog.setTitle(R.string.rodes);
//define o icone com o icone "?"
alertDialog.setIcon(android.R.drawable.ic_menu_help);
//botao positivo "Sim"
alertDialog.setPositiveButton(R.string.sim, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {}
});
//botao negativo "Nao"
alertDialog.setNegativeButton(R.string.nao, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {}
});
final AlertDialog dialog = alertDialog.create();
//Redimensiona a janela, caso seja necessario
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
dialog.show();
//Impede que a janela seja fechada ao clicar em "Sim"
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
retorno = NAO;
//Fecha a janela (pela nossa determinacao)
dialog.dismiss();
}
});
//Impede que a janela seja fechada ao clicar em "Nao"
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
retorno = SIM;
//Fecha a janela (pela nossa determinacao)
dialog.dismiss();
}
});
//TODO
//nao retonar enquanto o usuario nao clicar em "sim", "nao" ou cancelar
return retorno;
}