Metodo de mensagem para confirmação genérico

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;
	}

Em java a impressão só é feita após o usuário clicar em “OK” ou “Cancelar”:

Ex:

public class JOptionPaneTeste {

	public static void main(String[] args) {	
		String s = JOptionPane.showInputDialog("informe seu nome: ");
		System.out.println("Nome: " + s);
	}
}

É exatamente essa a funcionalidade que eu quero.

Quando é que o Android vai ter um JOptionPane. rsrsrs

No Android, o Dialog não é modal porque todo aplicativo precisa ser responsivo para lidar com eventos externos (uma ligação, por exemplo). Você terá que fazer seu callback de forma assíncrona.

Você poderia ter um Command para cada ação e passar ele como parâmetro para o seu método de mensagem. Aí chamaria o command respectivo para cada botão em vez de colocar uma variável de retorno. Isso é até um pouco mais elegante pois seu código fica mais baseado em troca de mensagens do que em chamadas procedurais, além de usar uma inversão de controle bacana.

Será que teria como você postar um exemplo?

Grato.

Muito obrigado Ataxexe, é exatamente isso.

Grato.