Estou utilizando um ProgressDialog enquanto envio informações para um banco de dados, como faço para exibir uma mensagem quando o envio terminar.
Segue como estou exibindo o ProgressDialog
pDialog=ProgressDialog.show(this,"Aguarde","Enviando informações...",true);newThread(){publicvoidrun(){// meu código que envia os dados}}.start();
Você precisa usar a classe android.os.Handler, sobrescrevendo o método handleMessage. No Activity você chama a thread passando a sua implementação de Handler e, no método run(), você invoca o método sendMessage do seu Handler.
Fiz um exemplo para ilustrar o que disse:
Activity
importcom.andrels.Teste.R;publicclassTestesAndroidActivityextendsActivity{privateThread1thread=null;privateContextcontext=this;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);finalProgressDialogpDialog=ProgressDialog.show(this,"Aguarde...","Contando");// Minha implementação de HandlerHandlerhandler=newHandler(){//Quando a Thread terminar, o método handleMessage será invocado@OverridepublicvoidhandleMessage(Messagemsg){pDialog.dismiss();AlertDialog.Builderbuilder=newAlertDialog.Builder(context);builder.setMessage("Contagem concluída!");builder.setCancelable(false);builder.setPositiveButton("OK",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){dialog.dismiss();}});AlertDialogalert=builder.create();alert.show();}};//Aqui passo a handler no construtor da minha Threadthread=newThread1(handler);thread.start();}}
Thread
packagecom.andrels.teste1;importandroid.os.Handler;importandroid.os.Message;importandroid.util.Log;publicclassThread1extendsThread{privateHandlerhandler;publicThread1(Handlerhandler){this.handler=handler;}@Overridepublicvoidrun(){inti=0;while(i<1000){Log.d("var i",i+"");i++;}//Invocando o método que sinalizará o fim da ThreadMessagemsg=newMessage();handler.sendMessage(msg);}}