android - java.lang.IllegalStateException android.widget.ListView.layoutChildren 崩溃

标签 android android-layout listview crash notifydatasetchanged

我编辑了这张票。

我仍然在产品中看到那些崩溃。很少,但我想了解问题是什么。

我的跟踪中没有数据可以表明它在我的代码中崩溃的位置。

我应该根据堆栈跟踪在代码中查找什么?

我用谷歌搜索了术语 java.lang.IllegalStateException android.widget.ListView.layoutChildren ,我发现大多数评论都与 notifyDataSetChanged 相关,其中文档说:

通知附加的观察者底层数据已更改,并且任何反射(reflect)数据集的 View 都应自行刷新。

我使用了大约 10 个 ListView 。我即时添加项目,它们永远不会改变。如果他们这样做,我会清除列表并从头开始重建它。

这是堆栈跟踪:

三星 Galaxy S6 ()、3072MB RAM、Android 7.0 报告第 1 份(共 6 份)

java.lang.IllegalStateException: 
  at android.widget.ListView.layoutChildren (ListView.java:1747)
  at android.widget.AbsListView.onLayout (AbsListView.java:3008)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.RelativeLayout.onLayout (RelativeLayout.java:1079)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.RelativeLayout.onLayout (RelativeLayout.java:1079)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.support.v4.widget.DrawerLayout.onLayout (DrawerLayout.java:1197)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.support.v7.widget.ActionBarOverlayLayout.onLayout (ActionBarOverlayLayout.java:433)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.LinearLayout.setChildFrame (LinearLayout.java:1741)
  at android.widget.LinearLayout.layoutVertical (LinearLayout.java:1585)
  at android.widget.LinearLayout.onLayout (LinearLayout.java:1494)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at com.android.internal.policy.DecorView.onLayout (DecorView.java:887)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.view.ViewRootImpl.performLayout (ViewRootImpl.java:2655)
  at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2371)
  at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1522)
  at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7098)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:927)
  at android.view.Choreographer.doCallbacks (Choreographer.java:702)
  at android.view.Choreographer.doFrame (Choreographer.java:638)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:913)
  at android.os.Handler.handleCallback (Handler.java:751)
  at android.os.Handler.dispatchMessage (Handler.java:95)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6682)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)

最佳答案

您需要调用该函数

mListAdapter.notifyDataSetChanged();

在 ListView 中添加或删除任何内容之后。

关于android - java.lang.IllegalStateException android.widget.ListView.layoutChildren 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45477843/

相关文章:

java - removeview() 不会删除 android

android - 如何保存android配置布局

java - 允许用户将多行文本框的一部分设置为粗体

java - CustomAdapter 中的更新按钮

c# - 在 ListView 的下拉列表中获取 selectedIndexChanged 上的 ListView 项的值

android - 如何在 Android 上做一个简单的 ftp 获取文件

android - commonsware 书中的 ActionBarsherlock 问题

android - 在每天的特定时间调用方法

android - 如何在 Phonegap/Cordova 应用中返回 Google 登录/帐户选择器?

java - 将单击监听器添加到 Drag-Sort-Listview 库