Tecnologia do Blogger.
RSS

[androidbrasil-dev] Re: Atualizando a tela após o término do asynctask

Olá Werner,

Acredito que seja por causado contexto.
Vc tem que passar o contexto de volta pra activity no POS quando chama este metodo atualizaTela.atualizaTelaComOK();   
Sua Activity principal faz o execute da async ela continua a executar e finaliza e quando vc chama o metodo atualizaTelaComOK(); dela 
acaba não encontrando o contexto da activity e da nulpointer...
Se não conseguir resolver, me da um toque q eu vejo um codigo meu aqui e te passo, pq penei pra aprender isso ai rs

Abrax

Em segunda-feira, 27 de outubro de 2014 17h01min32s UTC-2, Werner Marques escreveu:
Boa tarde, Colegas

Novamente estou aqui pedindo ajuda. Na tela de pedidos do meu app tem a EditText com a data e o botão OK para visualizar os pedidos somente desse dia escolhido pelo usuario. Nesses pedidos tem um status mostrando se ele já foi transferido para o webservice. Acontece que quando termina a execução do asynctask esse status não fica atualizado (embora o pedido tenha sido transmitido normalmente), é preciso eu apertar o botão OK novamente para a tela atualizar. Eu até tentei uma solução mostrada abaixo que gostaria de mostrar.

criei essa interface
Digite o código aqui...

package br.com.lemarq.sas.sync;

public interface AtualizaTelaPedido {
    public void atualizaTelaComOK();
}




essa é a minha classe asynctask até o onPostExecute

Digite o código aqui...

public class SyncPed extends AsyncTask<Void, Void, Void> {

    private Context context;
   private ProgressDialog progress;
       
   private Ped ped;
   private List<Peditem> listaPeditem;

    private AtualizaTelaPedido atualizaTela;

    public SyncPed(Context context, AtualizaTelaPedido atualizaTela) {
       this.atualizaTela = atualizaTela;
   }
   
   public SyncPed(Context context, Ped ped, List<Peditem> listaPeditem) {
       this.context = context;
       this.ped = ped;
       this.listaPeditem = listaPeditem;
   }


    @Override
   protected void onPreExecute() {
       super.onPreExecute();
       progress = ProgressDialog.show(context, "Aguarde...", "Enviando Pedido e Recebendo Confirmação", true, true);
   }
   
   @Override
   protected Void doInBackground(Void... params) {
       EnviaPed(ped);
       EnviaPedItem(listaPeditem);
       ConfirmarRecebimento(ped);
       return null;
   }

    @Override
   protected void onPostExecute(Void result) {
       super.onPostExecute(result);
       progress.dismiss();
       atualizaTela.atualizaTelaComOK();      
    }
       





e essa e a classe activity que chama a implementação 
Digite o código aqui...
public class PedLista extends Activity implements AtualizaTelaPedido {




o metodo sobrescrito da interface AtualizaTelaPedido, que esta dentro da activity PedLista.java
Digite o código aqui...
@Override
   public void atualizaTelaComOK() {
       btnOk.performClick();
   }  



a chamada a asynctask
Digite o código aqui...
        SyncPed taskPed = new SyncPed(ctx, ped, listaPeditem);
   taskPed.execute();



e o erro apresentado no Log
Digite o código aqui...
10-25 12:44:16.689: D/Erro:(20891): Invalid index 1, size is 1
10-25 12:44:17.959: I/Dados:(20891): Recebido pelo Webservice -> No.Ped: 36 Dispositivo: 200
10-25 12:44:17.959: W/dalvikvm(20891): threadid=1: thread exiting with uncaught exception (group=0x401f5560)
10-25 12:44:17.959: E/AndroidRuntime(20891): FATAL EXCEPTION: main
10-25 12:44:17.959: E/AndroidRuntime(20891): java.lang.NullPointerException
10-25 12:44:17.959: E/AndroidRuntime(20891):  at br.com.lemarq.sas.sync.SyncPed.onPostExecute(SyncPed.java:71)
10-25 12:44:17.959: E/AndroidRuntime(20891):  at br.com.lemarq.sas.sync.SyncPed.onPostExecute(SyncPed.java:1)
10-25 12:44:17.959: E/AndroidRuntime(20891):  at android.os.AsyncTask.finish(AsyncTask.java:417)
10-25 12:44:17.959: E/AndroidRuntime(20891):  at android.os.AsyncTask.access$300(AsyncTask.java:127)
10-25 12:44:17.959: E/AndroidRuntime(20891):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
10-25 12:44:17.959: E/AndroidRuntime(20891):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-25 12:44:17.959: E/AndroidRuntime(20891):  at android.os.Looper.loop(Looper.java:130)
10-25 12:44:17.959: E/AndroidRuntime(20891):  at android.app.ActivityThread.main(ActivityThread.java:3687)
10-25 12:44:17.959: E/AndroidRuntime(20891):  at java.lang.reflect.Method.invokeNative(Native Method)
10-25 12:44:17.959: E/AndroidRuntime(20891):  at java.lang.reflect.Method.invoke(Method.java:507)
10-25 12:44:17.959: E/AndroidRuntime(20891):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
10-25 12:44:17.959: E/AndroidRuntime(20891):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
10-25 12:44:17.959: E/AndroidRuntime(20891):  at dalvik.system.NativeStart.main(Native Method)




--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário