2017-01-21 7 views
0

初期画面でデータベースから取得したデータを表示するアプリケーションを開発する。ユーザーは別の編集画面でデータを編集できます。編集画面を終了すると、ユーザーは最初の表示画面に戻ります。データベースを再クエリしますが、返されるデータは編集前の値です。アンドロイド更新記録と再クエリー

私はDBプロバイダモデルを使用していますし、試してみました:

たびに別のを使用して初期画面
  • に戻って別のカーソルを使用して初期データベース検索
  • で使用されるカーソルをクローズ
    • クエリを使用して編集画面に表示されるデータを取得する
    • このカーソルデータの処理が完了すると、使用されている各カーソルが閉じられるようにします。

    データベース照会とアプリケーションの再起動により、編集された値が表示されるため、更新が正常に機能していると確信しています。私は何が欠けていますか?

  • +0

    [ローダー](https://developer.android.com/guide/components/loaders.html)を使用していますか? – Karakuri

    +0

    ローダーを使用せず、一度に1つのレコードで作業します。 – MrMagoo

    +0

    この時点で、あなたのコードがあなたが期待することをしていないところを理解する必要があります。最初の画面に戻るときに実際に新しいクエリを実行していること、この新しいクエリが実際にデータを返すこと、UIの更新をトリガーして新しい値をビューにバインドすること、新しい値が実際に新しい値古い値ではないかもしれません(おそらく何らかの種類のキャッシュが存在します)。そこのどこかで、意図したとおりに動作しないものがあります。 – Karakuri

    答えて

    0

    この問題は、エディタ機能をサポートするために使用されたクラスの誤解状態に関連していることがわかりました。 OnStop()とonDestroy()は、編集画面を終了するときに呼び出され、そのメソッドでデータベースを更新するメソッドを呼び出すと考えました。

    代わりにonBackPressed()を使用し、更新された値が表示される前に更新プロセスを完了するように変更されました。

    関連する問題