2010-12-02 2 views
2

В моей деятельности я звоню в веб-службы. Поэтому после того, как веб-сервис вернет результат, я должен показать предупреждение. Поскольку alert является частью пользовательского интерфейса, я думаю, что внутри onPostExecute() я должен написать код предупреждения. Но когда мне кажется, что эта ошибка наступает. Показанокак показать предупреждение после вызова webservice

Ошибка:

12-02 09:59:08.508: ERROR/AndroidRuntime(451): Uncaught handler: thread main exiting 
due to uncaught exception 
12-02 09:59:08.528: ERROR/AndroidRuntime(451): 
android.view.WindowManager$BadTokenException: Unable to add window -- token 
[email protected] is not valid; is your 
activity running? 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
android.view.ViewRoot.setView(ViewRoot.java:456) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
android.view.Window$LocalWindowManager.addView(Window.java:409) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
android.app.Dialog.show(Dialog.java:238) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
android.app.AlertDialog$Builder.show(AlertDialog.java:802) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at com.myapp.android.activities.Register$PostCodeTask.onPostExecute(Register.java:291) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at  com.myapp.android.activities.Register$PostCodeTask.onPostExecute(Register.java:1) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
android.os.AsyncTask.finish(AsyncTask.java:416) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
android.os.AsyncTask.access$300(AsyncTask.java:127) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:428) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
android.os.Handler.dispatchMessage(Handler.java:99) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
android.os.Looper.loop(Looper.java:123) 
android.app.ActivityThread.main(ActivityThread.java:4203) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
java.lang.reflect.Method.invokeNative(Native Method) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
java.lang.reflect.Method.invoke(Method.java:521) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 
12-02 09:59:08.528: ERROR/AndroidRuntime(451):  at dalvik.system.NativeStart.main(Native 
Method) 

Может кто-нибудь, пожалуйста, помогите решить мою проблему. Заранее спасибо :)

+0

Mathew Можете ли вы показать нам псевдокод. – 2010-12-02 04:54:32

+0

(пожалуйста, не злоупотребляйте «flag => требует внимания модератора», то есть для целей администратора, например, для удаления неприемлемого контента) – 2010-12-02 08:43:15

ответ

1

Вам необходимо выполнить код предупреждения в потоке пользовательского интерфейса. Существует несколько способов сделать это, например,

runOnUiThread(new Runnable() { 
    public void run() { 
     Toast.makeText(MyActivity.this, "Hello there", Toast.LENGTH_LONG).show(); 
    } 
}); 
Смежные вопросы