我正在编写一个Android应用程序(目标是Android版本2.1)。我使用ExpandableListView
和SimpleCursorTreeAdapter
。我发现它会按照这个顺序崩溃:
ExpandableListView
启动为空(即数据库中没有相应的记录)。ExpandableListView
返回到屏幕。现在,显示组。经过几天的互联网搜索,然后痛苦地追踪我的应用程序源代码,然后是Android的平台源代码,似乎问题是:当Android平台发起它时{{1}它会在实例化期间将子字段列表存储在私有成员SimpleCursorTreeAdapter
中,并且(奇怪地) ON条件如果至少有一个组。如果没有记录(因此没有组),则不存储子字段列表。随后添加记录以及将组扩展到显示的子行时,mChildFrom
将崩溃,因为私有成员ExpandableListView
为空。
所以,我现在的好处是:如果数据库中有相关记录,则只实例化mChildFrom
。如果没有,请在SimpleCursorTreeAdapter
期间重试实例化。
如果有人有更好的崩溃原因,或者有更好的解决方案,那对我(或其他有相同问题的穷人)会有所帮助。 (我倾向于认为它是Android平台中的一个错误。)
答案 0 :(得分:0)
尝试以下方法。在onCreate()中实例化适配器,但将null作为游标参数传递。在onResume()中,然后创建新的Cursor并使用changeCursor()将其传递给适配器。通过这种方式,每当您在数据模型上更改任何内容(添加,删除,编辑行)时,总会得到一个新光标。