2012-03-12 5 views
1

私は2つのアクティビティA-> Bを持っています。 Aは親アクティビティ、Bは "設定"のようなものです。 Bでは、ユーザーはアプリのデータベースを更新するいくつかの選択を行います。 Aはそれに従っていくらかのテキストビューを設定するためにデータベースを読みとる必要があります。Android - 子アクティビティはonDestroyのデータベースを更新し、親はonResumeを読み込みます

私が思うには:Bでは、ユーザは選択肢をいくつかのトグルボタンで設定し、onDestroy機能ではボタンの状態を読み込み、dbを更新します(変更を送信しません)ボタン "、私はonDestroyを使用します)。次に、AのonResume関数で、dbを読み込んでフィールドを更新するルーチンを呼び出します。

問題は、Aで変更が表示されないことです。しかし、私がBに戻って新しい変更をせずにAに戻ると、変更は表示され、正しくなります。

何が間違っていて、実行する必要がありますか?私はAとBの間にダミーアクティビティを使用することができますが、これはうまくいくかもしれませんが、これが良い実装であるかどうかはわかりません。

答えて

1

onDestroy()メソッドの代わりに、たとえばonPause()またはonStop()メソッドを試してみてください。そして、これを見て:あなたは送信ボタンを実装したくない場合は

enter image description here

+0

ありがとうございました! – george

+1

アクティビティが実行中に殺されることができず、atleast onPause状態を経なければならないため、すべてのデータの保存はonPauseで行われません。 –

1

、あなたはonPause()の代わりonDestroy()でデータベースを更新したほうが良いでしょう。

@Override 
    protected void onPause() { 
     super.onPause();  
      if (isFinishing()) { 
       //Database updates here 
      } 
     } 
    } 
+0

OKです!どうもありがとうございました! – george