2011-12-29 11 views
0

基本的にリストがあり、アクティビティが完全に破棄されない限り、アクティビティが復元されるたびにオフセットを記憶してオフセット値をロードする必要があります。あなたの活動を背景に配置および/または破壊される前に、あなたにもonStop()onDestroy()で状態を保存する必要はありませんのでアクティビティ状態の変更時にSharedPreferencesから値を保存および取得する

//Inside onCreate 
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
Offset = settings.getInt("TheOffset", 0); 
//End onCreate 

@Override 
protected void onPause() { 
    super.onPause(); 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putInt("TheOffset", Offset); 
} 
@Override 
protected void onStop() { 
    super.onStop(); 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putInt("TheOffset", Offset); 
} 
@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    //settings.getInt("TheOffset", 0); 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putInt("TheOffset", 0); 
} 
+0

質問は何ですか? –

+0

@mbaird、あなたは私が何を求めようとしているのか正確に尋ねました。^_^ – neevek

+0

LMAO ....申し訳ありませんが、私はまだ朝食を食べていません。 これは機能しません。正しく動作しているかどうかはわかりません。 – James

答えて

3

onPause()は常に、呼び出されます。

SharedPreferencesで状態を保持するには、値を書き込んだ後にeditor.commit()を追加する必要があります。それ以外の場合は保存されません。このように:

super.onPause(); 
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putInt("TheOffset", Offset); 
editor.commit(); 

あなたはもっとここで読むことができます。http://developer.android.com/reference/android/app/Activity.html#SavingPersistentState

+0

それは感謝しました、私はコミット()を忘れました。また、州についてのヒントもありがとう。 – James

+0

commit()の代わりにapply()を使うことをお勧めします。このstackoverflowスレッドを参照してください:https://stackoverflow.com/questions/5960678/whats-the-difference-between-commit-and-apply-in-shared-preference – Dika

0

あなただけのonResume(オフセット保存)と活動が起こっている時に0に設定する必要がありますが破壊され、そのことができます次のようにonPauseでisFinishingを()()、使用して言う:

protected void onPause() { 
    if(isFinishing()) { 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putInt("TheOffset", 0); 
     editor.commit(); 
    } 
} 

...しかし、私はまだあなたが達成しようとするどのような見当がつかない。

関連する問題