我正在编写一个 Android 应用程序(针对 Android 版本 2.1 以上)。我正在使用ExpandableListView
带有SimpleCursorTreeAdapter
. 我发现它会按照以下顺序崩溃:
ExpandableListView
启动时为空(即数据库中没有相应的记录)。- 添加记录。
- 使用 回到屏幕
ExpandableListView
。现在,显示组。 - 点击群组展开,活动将被强制关闭。
经过几天的互联网搜索,然后痛苦地追踪我的应用程序的源代码和Android的平台源代码,
似乎问题是:当Android平台启动 ItheSimpleCursorTreeAdapter
时,
它会在实例化过程中将子字段列表存储在 private 成员中mChildFrom
一次(奇怪的是)条件是如果至少有一组。如果没有记录(因此没有组),则不存储子字段列表。当随后添加记录以及将组扩展到显示的子行时,ExpandableListView
将崩溃,因为私有成员mChildFrom
为空。
所以,我现在的解决方法是:只实例化SimpleCursorTreeAdapter
数据库中是否有相关记录。如果没有,请在OnResume()
.
如果有人对崩溃有更好的理由或有更好的解决方案,这将对我(或其他有同样问题的可怜人)有所帮助。(我倾向于认为这是 Android 平台中的一个错误。)