希望有人可以帮助解决这个在我看来是一个特殊的问题。我的思绪在这里有点跳动,因为它破坏了我对 Android Activity 生命周期的理解。让我试着让事情变得更清楚。
问题:我在自定义适配器(扩展 BaseAdapter)的“getView”方法期间收到“StaleDataException”,该适配器用于填充 GridView 的活动。到目前为止听起来很简单。当我第一次进入活动时,适配器按预期工作并且填充了网格。我在 Activity 上有一个按钮,它会触发 Intent 以允许用户拍照,然后通过“onActivityResult”返回,将图像保存到数据库中。这一切也都奏效了。事实上,我先写了那部分,然后添加了适配器和网格视图。
现在,当我去相机拍照时,正在发生 StaleDataException,然后单击“确定”返回......我在我的活动的大多数事件中都有很多 Log 语句,而且非常奇怪的是,StaleDataException 发生在任何之前这些事件被触发......在 OnActivityResult/OnResume 等之前。
所以我很困惑为什么在我正确返回我的活动之前以及在调用 onActivityResult/OnResume 之前访问适配器。
调试导致异常的步骤,这一切都发生在这一行:
String contentType = dataCursor.getString(dataCursor.getColumnIndexOrThrow(DbStatics.ACCIDENTS_MEDIA_KEY_TYPE));
让我感到困惑的是 dataCursor 实际上是 Open 并且第一个调用 (getColumnIndexOrThrow) 也返回一个值..所以它的 getString() 导致异常。
所以我希望这足够清楚......并且真的真的希望有人能够对正在发生的事情有所了解......
非常感谢,