1

誰かがこれを手伝ってくれることを願っています..私には奇妙な問題のように思えます..Androidアクティビティライフサイクルの理解が吹き飛ばされたので、ここで私の心は少し脈打っています..物事をより明確にしようとしましょう.

問題: アクティビティで GridView を設定するために使用するカスタム アダプター (拡張 BaseAdapter) の 'getView' メソッド中に 'StaleDataException' を受け取ります。これまでのところ、簡単に聞こえます..最初にアクティビティに入ると、アダプターは期待どおりに機能し、グリッドにデータが入力されています。ユーザーが写真を撮れるようにするためにインテントを起動するアクティビティにボタンがあり、画像をデータベースに保存する「onActivityResult」を介して戻ってきます。これもすべて機能しました。実際、最初にその部分を書き、その後にアダプターとグリッドビューを追加しました。

写真を撮るためにカメラに行ったときに StaleDataException が発生し、[OK] をクリックして戻ります...アクティビティのほとんどのイベントに多くの Log ステートメントがあり、非常に奇妙なことに、いずれかの前に StaleDataException が発生しています。これらのイベントはトリガーされます... OnActivityResult/OnResume などの前に

SO 私は、アクティビティに適切に戻る前、および onActivityResult/OnResume が呼び出される前に、なぜアダプターがアクセスされているのかについて非常に混乱しています..

例外に至るまでのステップをデバッグすると、すべてこの行で発生します。

String contentType = dataCursor.getString(dataCursor.getColumnIndexOrThrow(DbStatics.ACCIDENTS_MEDIA_KEY_TYPE));

また、私を困惑させているのは、dataCursor が実際に Open であり、最初の呼び出し (getColumnIndexOrThrow) も値を返していることです。そのため、例外につながる getString() です。

それで、それが十分に明確であることを願っています...そして、誰かが何が起こっているのかについて何らかの光を当てることができることを本当に願っています..

どうもありがとう、

4

1 に答える 1

3

私は最近、ほぼ同じシナリオでまったく同じ問題に遭遇しました。(私は GridView ではなくギャラリーを使用しています)

私の場合、最近 N1 を 2.3 に更新するまで、私のコードは何ヶ月も問題なく動作していました。私の解決策 (私自身の多くの頭脳の鼓動の後) は、アダプターに渡すカーソルで startManagingCursor を呼び出さないことでした。代わりに、自分でカーソルを管理します。

それは私にとって問題を解決したように見えました....理由はわかりませんが...おそらく、より経験豊富な人が光を当てることができます.

これがお役に立てば幸いです。

于 2011-03-22T00:59:02.007 に答える