не могу создать обработчик внутри потока, который не вызвал looper.prepare - PullRequest
2 голосов
/ 02 декабря 2011

Примечание : я знаю, что есть много вопросов, связанных с этим, но все же я не уверен, поэтому спрашиваю.

Я получаю не могу создать обработчик внутри потока, который не вызвал looper.prepare, когда я пытаюсь показать диалоговое окно.

Вот мой код ...

// этот метод вызывается из другого метода, основанного на некотором условии, которое вызывается при нажатии кнопки

 private void download() {
    thread = new Thread() {
     public void run() {
    /**** Downloads each tour's Tour.plist file ****/
            try {
                // do many heavy operations here, like download, 
                //calling web webvice and starting another activity

               This comes at the end

                Intent toAudio = new Intent(TourDescription.this,Audio.class);
                startActivity(toAudio);
         } catch (Exception e) {
       }  

       }
    }; 
    thread.start();
 }

Теперь, прежде чем эта действительность будет вызвана, я пытаюсь показать диалог. Я пытаюсь сделать это прямо перед вызовом Intent.

Может ли кто-нибудь тело подсказать, пожалуйста, как это сделать, так как я не понимаю, как это решить

1 Ответ

5 голосов
/ 02 декабря 2011

вы не можете показать диалог из дочернего потока. Диалог может быть показан только из потока пользовательского интерфейса / основного потока.

попробуйте это изнутри дочерней нити

runOnUiThread(new Runnable() {

        @Override
        public void run() {
            // TODO show dialog....

        }
    });
...