又出现一次07-25 16:03:24.148: E/AndroidRuntime(7102): FATAL EXCEPTION: main
07-25 16:03:24.148: E/AndroidRuntime(7102): 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(2131165218, class android.widget.ListView) with Adapter(class cn.qi.link.LinkTestActivity$PintTempDataAdapter)]
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.ListView.layoutChildren(ListView.java:1551)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.AbsListView.onLayout(AbsListView.java:2426)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.View.layout(View.java:14905)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.ViewGroup.layout(ViewGroup.java:4601)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1694)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1552)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.LinearLayout.onLayout(LinearLayout.java:1465)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.View.layout(View.java:14905)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.ViewGroup.layout(ViewGroup.java:4601)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.View.layout(View.java:14905)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.ViewGroup.layout(ViewGroup.java:4601)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1694)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1552)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.LinearLayout.onLayout(LinearLayout.java:1465)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.View.layout(View.java:14905)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.ViewGroup.layout(ViewGroup.java:4601)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.View.layout(View.java:14905)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.ViewGroup.layout(ViewGroup.java:4601)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1694)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1552)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.LinearLayout.onLayout(LinearLayout.java:1465)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.View.layout(View.java:14905)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.ViewGroup.layout(ViewGroup.java:4601)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.View.layout(View.java:14905)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.ViewGroup.layout(ViewGroup.java:4601)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2213)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2027)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1237)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5162)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.Choreographer.doCallbacks(Choreographer.java:591)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.Choreographer.doFrame(Choreographer.java:561)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.os.Handler.handleCallback(Handler.java:725)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.os.Handler.dispatchMessage(Handler.java:92)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.os.Looper.loop(Looper.java:176)
07-25 16:03:24.148: E/AndroidRuntime(7102): at android.app.ActivityThread.main(ActivityThread.java:5319)
07-25 16:03:24.148: E/AndroidRuntime(7102): at java.lang.reflect.Method.invokeNative(Native Method)
07-25 16:03:24.148: E/AndroidRuntime(7102): at java.lang.reflect.Method.invoke(Method.java:511)
07-25 16:03:24.148: E/AndroidRuntime(7102): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
07-25 16:03:24.148: E/AndroidRuntime(7102): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
07-25 16:03:24.148: E/AndroidRuntime(7102): at dalvik.system.NativeStart.main(Native Method)
解决方案 »
- launcher 和systemUI(状态栏) 的问题
- 使用OpenGL循环播放一系列的图片,结果直接崩溃libGLESv1_CM_tegra.so (glDisable)
- Android消息推送
- android 蓝牙游戏 数据传递
- 以下java关于图像的代码的等价android代码是怎么样的?
- ADT如何把StringArray的某一个元素赋值给PlainText
- 给弹出框的确定按钮添加监听器
- Android 中WebView加载本地css和js
- 为什么模拟器不能播放视频
- Theme.AppCompat.Light.DarkActionBar
- 点击一个按钮触发另外一个功能怎么实现的?
- handler 中使用lock.lock锁住代码块,这样做有必要么?是符合逻辑的吗?hanlder中会出现多线程的情况?
1.将所有数据“完全”保存在adapter内部,即使有外部数据进入,也会用.clone()重新生成副本,保证了数据完全是由adapter维护的。2.保证所有setDeviceList()/clearDeviceList()是从主线程里调用的,如何保证是从主线程中调用的呢: a.调用Activity.runOnUIThread()方法; b.使用Handler(其实这并不非常准确,因为Handler也可以运行在非UI线程); c.使用AsyncTask。参考博客: http://blog.csdn.net/ueryueryuery/article/details/20607845
我在 Handler 中更新的 不是 UI 线程吗
我在 Handler 中更新的 不是 UI 线程吗 你在Handler里执行什么更新UI的操作
我在 Handler 中更新的 不是 UI 线程吗 你在Handler里执行什么更新UI的操作 public void inflatePingListView(List<String[]> pingResults){
adapter.setData(pingResults);
adapter.notifyDataSetChanged();
lv_ping_result.setVisibility(View.GONE);
lv_ping_result.requestLayout();
lv_ping_result.setAdapter(adapter);
lv_ping_result.setSelection(pingResults.size() - 1);
lv_ping_result.setVisibility(View.VISIBLE);
}操作
我在 Handler 中更新的 不是 UI 线程吗 你在Handler里执行什么更新UI的操作 public void inflatePingListView(List<String[]> pingResults){
adapter.setData(pingResults);
adapter.notifyDataSetChanged();
lv_ping_result.setVisibility(View.GONE);
lv_ping_result.requestLayout();
lv_ping_result.setAdapter(adapter);
lv_ping_result.setSelection(pingResults.size() - 1);
lv_ping_result.setVisibility(View.VISIBLE);
}操作lv_ping_result.setAdapter(adapter);
这句之后你再执行
adapter.notifyDataSetChanged();
我在 Handler 中更新的 不是 UI 线程吗
要看你的handler构造在哪个线程。