希望有人可以帮助解决这个问题,这在我看来是一个特殊的问题。我的思绪在这里激动,因为它让我对Android活动生命周期的理解变得更加深刻。让我试着让事情更清楚。
问题:我在自定义适配器(扩展BaseAdapter)的'getView'方法中收到'StaleDataException',我在活动上使用它来填充GridView。到目前为止听起来很直接。当我第一次进入活动时,适配器正在按预期工作并且网格已填充。 我在活动上有一个按钮,用于触发Intent以允许用户拍照,然后通过'onActivityResult'将图像保存到数据库中。这一切都有效。事实上,我首先编写了该部分,然后添加了适配器和放大器。之后是gridview。
现在当我去相机拍照片时出现StaleDataException,然后单击OK返回...我的活动中的大多数事件都有很多Log语句,而且很奇怪StaleDataException正在发生在触发任何这些事件之前......在OnActivityResult / OnResume等之前。
所以我很困惑为什么在我正确地返回到我的活动之前以及在调用onActivityResult / OnResume之前访问适配器..
调试导致异常的步骤,这一切都发生在这一行:
String contentType = dataCursor.getString(dataCursor.getColumnIndexOrThrow(DbStatics.ACCIDENTS_MEDIA_KEY_TYPE));
令我感到困惑的是,dataCursor实际上是Open,第一个调用(getColumnIndexOrThrow)也返回一个值..所以它的getString()会导致异常。
所以我希望这很清楚......并且真的希望有人能够对正在发生的事情有所了解......
非常感谢,
答案 0 :(得分:3)
我最近在几乎完全相同的情况下遇到了完全相同的问题。 (我使用的是Gallery而不是GridView)
就我而言,我的代码工作好几个月 - 直到我最近将我的N1更新为2.3。 我的解决方案(在我自己的大脑脉冲之后)是不调用我传入我的适配器的光标上的startManagingCursor。 相反,我自己管理光标。
这似乎可以解决我的问题....虽然我不能告诉你为什么......也许更有经验的人可以解决这个问题。
希望这会对你有所帮助。