2013-12-24 6 views
-3

У меня есть следующее сообщение об ошибке:Android Невозможно создать обработчик внутри потока, который не называется Looper.prepare()

Can't create handler inside thread that has not 
    called Looper.prepare() 

Я также попытался запустить на UI тему и используя Looper.prepare с Опубликовать в сам отменить.

Моя структура выглядит следующим образом:

public class WebPageActivity extends Activity { 
    int scan_NOK = 0; 
    int scan_OK = 0; 
    Date scan_time = new Date(); 
    Timer timer = new Timer(); 

    // SOME CODE TO START MY VOID FUNCTION 

    void beginListenForData(){ 
     workerThread = new Thread(new Runnable() 
     { 
      public void run() 
      {     
       while(!Thread.currentThread().isInterrupted() && !stopWorker) 
       { 
        // SOME CODE 

        if(data.length() != 40 && data.length() != 36) { 
         errorSound(); 
         scan_NOK++; 
        } else { 
         scan_OK++; 
        } 

        WebPageActivity.this.runOnUiThread(new Runnable() { 
         public void run() { 
          timer.cancel(); // ERROR HERE 
          timer = new Timer(); // OR HERE 

          timer.schedule(new TimerTask() { 
           public void run() { 
            if(scan_NOK + scan_OK > 1) { 
             AlertDialog.Builder dlgAlert = new AlertDialog.Builder(WebPageActivity.this); 

             dlgAlert.setMessage("Scans \r\nOK: " + scan_OK + "\r\nNot OK: " + scan_NOK); 
             dlgAlert.setTitle("Scans"); 
             dlgAlert.setPositiveButton("Ok", 
             new DialogInterface.OnClickListener() { 
              public void onClick(DialogInterface dialog, int which) { 

              } 
             }); 
             dlgAlert.setCancelable(true); 
             dlgAlert.create().show();    
            } 
           } 
          }, 2500); 
         } 
        }); 
       } 
      } 
     } 
    } 
} 

Любые идеи?

ответ

1

Задача таймера выполняется в другом потоке. Невозможно обновить ui из нити ui. использование runOnUiThread.

Убедитесь, что вы открыли диалоговое окно предупреждения из нити ui.

+0

Пожалуйста, загляните в мой код, я уже использую 'runOnUiThread'. Также попробовал это с именем 'classname.this' – Niels

+0

@Niels, у вас есть runOnUithread, в котором у вас есть timertask, в котором вы показываете диалоговое окно с предупреждением. Теперь используйте 'runOnUiThread' только для диалогового окна оповещений – Raghunandan

+0

. Упомянув, что я добавил дополнительный« runOnUiThread »для диалога, и он работает сейчас. Пробовал какое-то время. Спасибо! Невозможно принять тент с 10 минутами. – Niels

Смежные вопросы

 Смежные вопросы