2011-05-18 64 views
0
05-18 17:53:35.318: WARN/System.err(474): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
05-18 17:53:35.349: WARN/System.err(474):  at android.os.Handler.<init>(Handler.java:121) 
05-18 17:53:35.349: WARN/System.err(474):  at android.app.Dialog.<init>(Dialog.java:101) 
05-18 17:53:35.358: WARN/System.err(474):  at android.app.AlertDialog.<init>(AlertDialog.java:63) 
05-18 17:53:35.358: WARN/System.err(474):  at android.app.ProgressDialog.<init>(ProgressDialog.java:80) 
05-18 17:53:35.377: WARN/System.err(474):  at android.app.ProgressDialog.<init>(ProgressDialog.java:76) 
05-18 17:53:35.377: WARN/System.err(474):  at com.Utils.SProgress.StartProgress(SProgress.java:42) 
05-18 17:53:35.387: WARN/System.err(474):  at com.FindMe.DisplayAtms$Asyctast.onPreExecute(DisplayAtms.java:880) 
05-18 17:53:35.400: WARN/System.err(474):  at android.os.AsyncTask.execute(AsyncTask.java:391) 
05-18 17:53:35.400: WARN/System.err(474):  at com.FindMe.DisplayAtms.LoadFunction(DisplayAtms.java:141) 
05-18 17:53:35.408: WARN/System.err(474):  at com.FindMe.MyApplication$AsyncATMS.doInBackground(MyApplication.java:207) 
05-18 17:53:35.419: WARN/System.err(474):  at com.FindMe.MyApplication$AsyncATMS.doInBackground(MyApplication.java:1) 
05-18 17:53:35.419: WARN/System.err(474):  at android.os.AsyncTask$2.call(AsyncTask.java:185) 
05-18 17:53:35.427: WARN/System.err(474):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
05-18 17:53:35.438: WARN/System.err(474):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
05-18 17:53:35.438: WARN/System.err(474):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
05-18 17:53:35.447: WARN/System.err(474):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
05-18 17:53:35.458: WARN/System.err(474):  at java.lang.Thread.run(Thread.java:1096) 

我的代码运行AsyncTask时looper错误?

Another function() 
{ 

anotherSingletonprogressdiloag.hide(); 

.new Asyctast().execute(); 


} 




public class Asyctast extends AsyncTask<Void, Object, Void> 
    { 

    private ProgressDialog dialog = new ProgressDialog(DisplayAtms.this); 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      dialog.show(); 

     } 


     @Override 
     protected void onProgressUpdate(final Object... args) { 
      super.onProgressUpdate(args); 
      if ((Boolean) args[0]) { 
       Toast.makeText(DisplayAtms.this, args[1].toString(), 
         Toast.LENGTH_LONG).show(); 
      } 
     } 

     @Override 
     protected Void doInBackground(Void... arg0) { 
      Log.d("Asynctask", ""+arg0); 


       publishProgress(true,"sd sdfsdf"); 


       return null; 

     } 

    } 

我开始放在signleton类另一个对话框后,这个任务被停止线程,然后我试图启动另一个进程中的AsyncTask 对话框,本次对话onPreexecute提高尺蠖错误任何一个人指导我如何摆脱这个问题?

回答

1
private final Runnable Example= new Runnable() 
    { 
     public void run() 
     { 
      try 
      { 
       //put ur code which cause the looper error    
      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 
     } 
    }; 
    private final Handler mHandler = new Handler();** 

,并呼吁乌尔异步任务内的下列

mHandler.post(Example); 

希望你明白。

+0

是的,我得到它我在毛孔上使用runonuiThread(exampleRunable)执行并将该代码移动到可替代的那个runnable。谢谢 – UMAR 2011-05-18 13:01:20

+0

不要给我投票答案。 – Kakey 2011-05-19 05:26:46

0

您不能在asynctask运行时修改UI - 只能在执行前或执行后执行。

如果您需要更新ui组件,您可以在主类中使用处理程序并将更新发送到该处理程序。

+0

可以请你在这里指导我如何将它移动到那个处理器类的东西? – UMAR 2011-05-18 12:15:14