AlertDialog para retornar true ou false

Olá
Bom, estou pesquisando ainda… Não me julgue xD

Estou com um código para criar um método que crie um AlertDialog e eu só preciso chamar depois o método. Ocorre que eu não consigo fazer o método retornar verdadeiro ou falso, ele sempre retorna falso.

Método que cria AlertDialog:

    public boolean alertDialog(Context context, String titulo, String mensagem) {
        final boolean[] resultado = new boolean[1];
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setCancelable(true);
        builder.setTitle(titulo);
        builder.setPositiveButton("Confirmar", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                resultado[0] = true;
            }
        });
        builder.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                resultado[0] = false;
            }
        });
        builder.setMessage(mensagem);
        builder.show();
        return resultado[0];
    }

Aplicação:

if(alertDialog(getActivity(), "Titulo", "Mensagem questionando a vida")) {
     // alguma ação bacana
} else {
    // se chegou aqui, algo de errado não está certo
}

Porém, SEMPRE retorna false
Detalhe: Retorna false ANTES de eu informar o “Confirmar” ou “Cancelar”. Depois que eu seleciono um dos dois, ele já executou o else, então a aplicação meio que não faz nada se eu confirmar ou cancelar, porque ela já fez o else

Não foi eu que fiz(foi sugestão da IDE), dessa maneira eu consegui pelo menos fazer retornar um valor. Sei que a analise foi rápida, então devo comentar que a variável está sendo alterada dentro de um método onClick, e não é comum isso, então o método não tem acesso à variável, se não for bem desta forma que está… Se tiver outra maneira, seria ótimo

111

Sugestão da IDE

112

:thinking:
Dependendo da sua logica, crie um atributo do tipo booleano para a sua classe e altere o valor da forma que esta fazendo, dessa maneira pode deixar seu método de exibir o alert sem retorno.

O android não espera você clicar em um dos botões para continuar a execução do metodo. Então antes mesmo do usuário clicar em uma das opções, “Confirmar” ou “Cancelar” o seu metodo

public boolean alertDialog(Context context, String titulo, String mensagem)

é executado, então retornar a variavel resultado[0] antes do usúario clicar na opção desejada, por isso retorna sempre false, pois esse é o valor default de variaveis boolean.

Perfeito, é exatamente este o ponto!

Tendo isto em mente, há uma maneira de eu fazer esta função retornar booleano da maneira que eu quiser, digo, quando eu clicar “sim”, ele retorna true, quando eu clicar “cancelar” ele retorna false ?

Cara a muito tempo fiz uma gambiarra que corrigia esse problema. Mas não consegui encontrar o projeto e não consigo lembrar como fiz.