Parar execução aguardando o Alert Dialog

Boa noite,

Tenho uma classe Utils que possui o método abaixo, que é chamado após eu salvar um registro. Ele da um feedback para o usuário informando que esse foi salvo com sucesso. Entretanto, o programa continua executando abaixo, mesmo como o dialog aberto, como é possível ver no segundo código, ele já envia os dados para meu WS.

Alguém sabe como poderia fazer o dialog aguardar até eu clicar em OK.

Metodo do meu Utils que exibe a mensagem de feedback para o usuário.

public static void criaAlertSalvar(Context ctx) { AlertDialog alertDialog = new AlertDialog.Builder(ctx).create(); alertDialog.setTitle("Dados salvos!"); alertDialog.setIcon(R.drawable.save); alertDialog.setButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { return; } }); alertDialog.show(); }

Método (Resumido) do meu cadastro que salva, apresenta o utils e depois chama o WS.

public salvar() { //Salva e tal Utils.criaAlertSalvar(ctx); if (Utils .existConnectionInternet((ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE))) { new RegistroWS(reg, this).sincRegistro(); } }

Já ouviu falar no Padrão Observer?

DialogInterface.OnClickListener faz parte disso.

Não é essa “interface” que contém um método que será executado quando o botão for clicacado?

Adivinha…

“Jogue ele pra fora/pra cima”…

Como assim??

public static void criaAlertSalvar(Context ctx, DialogInterface.OnClickListener clickListener) { AlertDialog alertDialog = new AlertDialog.Builder(ctx).create(); alertDialog.setTitle("Dados salvos!"); alertDialog.setIcon(R.drawable.save); alertDialog.setButton("OK", clickListener); alertDialog.show(); }

Agora é só usar o método, instanciando esse listener “do lado de fora”, lá no seu método salvar(), e dentro da ação…bem…irá teu código de conexão.

Agora é contigo.
Qualquer dúvida, poste ai.
PS: Vale a pena dar estudada no Observer, fácil e simples.