Android: AsyncTask нуждается в контексте для отображения предупреждения после выхода из активности

У меня есть две активности, одна из них вызывает внутреннюю задачу формы: частный класс AsyncTask, она вызывает задачу, а затем завершает работу, переходя к другой активности. AsyncTask в какой-то момент показывает диалог алерта, но, скорее всего, контекст, который нужен для создания алерта, первой активности не является текущим контекстом приложения, то есть не текущей работающей активности. Поэтому, когда dialog.show() вызывается в AsyncTask, приложение вылетает.

Любая помощь там, как это решить?

Я не публиковал никакого кода, потому что думаю, что лучше, если вы просто поймете идею, не разбираясь в кодах, я отлаживал приложение, и оно действительно вылетает после выполнения alert.show().

Выход LogCat: 11-24 13:30:08.561: W/dalvikvm(2810): threadid=14: thread exiting with uncaught exception (group=0x41cd69a8) 11-24 13:30:08.752: E/cutils(2896): to chown(/mnt/shell/emulated/0, 0, 0) 11-24 13:30:08.753: E/cutils(2896): to chown(/mnt/shell/emulated/obb, 0, 0) 11-24 13:30:08.753: E/cutils(2896): to chown(/storage/emulated/0/Android, 0, 0) 11-24 13:30:08.754: E/cutils(2896): to chown(/storage/emulated/0/Android/obb, 0, 0)


person Muayad Salah    schedule 24.11.2014    source источник
comment
но показать logcat будет хорошо...   -  person Opiatefuchs    schedule 24.11.2014
comment
11-24 13:30:08.561: W/dalvikvm(2810): threadid=14: поток завершается с необработанным исключением (group=0x41cd69a8) 11-24 13:30:08.752: E/cutils(2896): to chown(/ mnt/shell/emulated/0, 0, 0) 11-24 13:30:08.753: E/cutils(2896): to chown(/mnt/shell/emulated/obb, 0, 0) 11-24 13:30 :08.753: E/cutils(2896): в chown(/storage/emulated/0/Android, 0, 0) 11-24 13:30:08.754: E/cutils(2896): в chown(/storage/emulated/ 0/Android/obb, 0, 0)   -  person Muayad Salah    schedule 24.11.2014
comment
Это ошибки и предупреждения, которые показал logcat   -  person Muayad Salah    schedule 24.11.2014
comment
должно быть больше, это не полный логарифм. Пожалуйста, настройте фильтр в eclipse, чтобы отображать только logcat из вашего приложения и ограничить его ошибкой.   -  person Opiatefuchs    schedule 24.11.2014
comment
Это единственные ошибки, которые я получил: \ Я мог бы опубликовать свой код, но он подключается к принтеру Bluetooth, и это действительно неприятно! Мой вопрос: как правильно показать предупреждение, не зная контекста? это вообще возможно? Я имею в виду, что если бы я сохранил контекст второго действия в общедоступной статической переменной, могу ли я передать его asyncTask и все?   -  person Muayad Salah    schedule 24.11.2014
comment
AsyncTask работает в фоновом режиме, то есть без блокировки или воздействия на пользовательский интерфейс, а AlertDialog требует активности в качестве контекста, а Alertdialog требует окна для отображения себя на нем. поэтому вам нужно использовать интерфейс, активировать его в методе интерфейса, который вы можете использовать в диалоговом окне оповещения или использовать run runOnUiThread (new Runnable () { @Override public void run () { // TODO Автоматически сгенерированный метод заглушки } });   -  person Arfan Mirza    schedule 24.11.2014


Ответы (1)


напишите свой код, чтобы показать диалоговое окно предупреждения в runOnUiThread

runOnUiThread(new Runnable() {

    @Override
    public void run() {
        // TODO Auto-generated method stub
        // write your code here and use app context
    }
});
person Meenal    schedule 24.11.2014