私は Android アプリを作成しています (Android バージョン 2.1 以降を対象としています)。と を使用しExpandableListView
ていSimpleCursorTreeAdapter
ます。次のシーケンスに従ってクラッシュすることがわかりました。
- は
ExpandableListView
空で起動します (つまり、データベースに対応するレコードがありません)。 - レコードが追加されます。
- で画面に戻ります
ExpandableListView
。これで、グループが表示されます。 - グループをクリックして展開すると、アクティビティが強制的に閉じられます。
何日にもわたってインターネットで検索し、アプリケーションのソースと Android のプラットフォーム ソースを苦労してトレースした後
、問題は次のように思われます。)少なくとも1 つのグループが存在する場合。レコードがない (したがってグループがない) 場合、子フィールドのリストは保存されません。後でレコードが追加され、表示された子行にグループを展開すると、プライベート メンバーが null であるため、 がクラッシュします。SimpleCursorTreeAdapter
mChildFrom
ExpandableListView
mChildFrom
したがって、私の回避SimpleCursorTreeAdapter
策は、データベースに関連するレコードがある場合にのみインスタンス化することです。そうでない場合は、 の間にインスタンス化を再試行してOnResume()
ください。
誰かがクラッシュのより良い理由を持っているか、より良い解決策を持っているなら、それは私(または同じ問題を抱えている他の貧しい人々)にとって役に立ちます. (これは Android プラットフォームのバグだと思います。)