0

我正在处理一个应用程序,如果用户登录时只会跳过一个屏幕....同时在一个返回void的asynctask中...检查应用程序的升级和如果有任何它通常会打开一个浏览器并下载一个文件...并在主线程中,如果应用程序已经存储了登录凭证,那么它会进入另一个类/屏幕。它通常有一个列表视图....列表是一个接一个地填充另一个记录....但在两者之间有时我得到应用程序崩溃的应用程序如何解决这个问题...和listView有一个IllegalStateException - 在打开屏幕之前打开一个浏览器。

PS。更新到ListView正从通常要求在主线程的功能更新视图,一个触发的AsyncTask ...

11-01 12:30:27.038: WARN/dalvikvm(10067): threadid=1: thread exiting with uncaught exception (group=0x400207d8) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067): FATAL EXCEPTION: main 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(16908298, class android.widget.ListView) with Adapter(class biz.graphight.graphight.CallSheetTab$CustomAdapter)] 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.widget.ListView.layoutChildren(ListView.java:1567) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.widget.AbsListView.onLayout(AbsListView.java:1263) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.view.View.layout(View.java:7035) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:909) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.view.View.layout(View.java:7035) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.view.View.layout(View.java:7035) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1042) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.view.View.layout(View.java:7035) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.view.View.layout(View.java:7035) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1045) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.os.Looper.loop(Looper.java:123) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at android.app.ActivityThread.main(ActivityThread.java:4628) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at java.lang.reflect.Method.invoke(Method.java:521) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:879) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:637) 
11-01 12:30:27.038: ERROR/AndroidRuntime(10067):  at dalvik.system.NativeStart.main(Native Method) 

任何想法......请......

回答

0

确保您已经获取了doInBackground()中的所有列表项,然后更新了onPostExecute()方法内的listview。

如果您想更新获取项目和显示项目作为与进步,当它被下载,那么你必须更新runOnUIThread()

内部列表视图例如:

/* Update UI */ 
myActivity.this.runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
     /* Do UI update for activity A */; 
    } 
}); 

相关Question about runOnUiThread

+0

非常感谢。那会做。 – medampudi

相关问题