2013-11-21 1 views
0

Ошибка: Getting error with UI thread.. , когда я пытаюсь показать предупреждение внутри doInBackground. Есть ли такая возможность?Как показать alertDailogue в doInBackground (..) запуска AsycncTask??

private class LoggingTask extends AsyncTask<String, Void, Integer> { 

    @Override 
    protected Integer doInBackground(String... params) { 
       //Get the sever connection and return the status 

    if(status==0){ 
      // show an alert here.... 
    } 
     return status; 
    } 
+0

опубликовать журнал ошибок и код – pavanmvn

+0

Попробовать диалоговое окно «Показать» в методе onPostExecute(). Как doInBackground() выполняется в фоновом протекторах, поэтому вы не можете показать диалог. –

+0

Невозможно показать предупреждение в фоновом режиме. http://stackoverflow.com/a/5990202/1476699 – vinay

ответ

1
@Override 
protected Integer doInBackground(String... params) { 
    // Get the sever connection and return the status 

    publishProgress() 
    @Override 
    protected void onProgressUpdate(Void... values) { 
    // TODO Auto-generated method stub 
    super.onProgressUpdate(values); 
//Do what ever you want 
    } 
+0

yup..this материал работает в моем случае. Это действительно хорошо Livin – Joyal

0

ли в фоновом режиме метода оленьей кожи допускается изменения пользовательского интерфейса, если вы хотите внести какие-либо изменения пользовательского интерфейса делает в onpostexecute методы

0

ли этот путь

@Override 
    protected Integer doInBackground(String... params) { 
     // Get the sever connection and return the status 

     if (status == 0) { 
      new Handler().post(new Runnable() { 

       @Override 
       public void run() { 
        // show an alert here.... 

       } 
      }); 

     } 
     return status; 
    } 
+0

@biraj .. вы правы, но если вы используете Thread Handler, AsyncTask может быть выброшен .. – Joyal

+1

другое решение onPostExecute(), данное @ Coderji –

+0

Уже я следил за tat way .. проблема тата, если эта AsyncTask находится в логине функциональность, статус с сервера - это недействительный вход, хотите показать предупреждение от doInBack и выйти из приложения .. ваш путь тоже хорош .. Спасибо – Joyal

0

сделать метод, который создает диалоговое окно в вашей активности (контекст будет активностью), а не в AsyncTask. Итак, когда ваш

if (status == 0) 

возвращает true, вы вызываете метод из нити пользовательского интерфейса. Таким образом, вы не создаете диалог в AsyncTask, и он должен работать.

0

doInBackground() не является подходящим местом для выполнения связанной с UI задачи. Вы должны сделать это в onPostExecute. Или вы можете запустить диалог в OnPreExecute() и отменить диалог onPostExecute().

0

Асинхронные задачи не запускаются в нитке ui, поэтому вы не можете этого сделать. Храните логическое значение. Затем вызовите диалоговое окно предупреждения после завершения асинхронной задачи в методе onpostexecute.

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