0

ここにはこれらのタイプの質問がたくさんあることは知っていますが、うまくいくものをまだ見つけていません。

過去30分ほどSharedPreferencesで遊んでいますが、これまでのところ値は問題なく保存されていますが、戻るボタンを長押しするかタスクマネージャーを使用してプロセスを強制終了し、アプリを再起動すると、デフォルト値に戻ります。

イコライザーを実行していて、フラット/リセット ボタンがあるため、デフォルト値は 50 です。

ええ、基本的にどのように値を保存して保存しておくのですか?!

これが私のさまざまな試みです:

試行 1:

     private int isFirstTime()
{
    SharedPreferences sp = getSharedPreferences("sliders", MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    for (int i = 0; i < num_sliders && i < MAX_SLIDERS; i++) {
        editor.putInt("sliders",  sliders[i].getProgress());
        editor.putInt("bass_boost", bass_boost.getProgress());
        editor.commit();
    }
    return num_sliders;


}

試行 2:

  public int saveProgress(){
SharedPreferences sp = getSharedPreferences("sliders2", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putInt("sliders",  sliders[0].getProgress());
editor.putInt("sliders2", sliders[1].getProgress());
editor.putInt("sliders3", sliders[2].getProgress());
editor.putInt("sliders4", sliders[3].getProgress());
editor.putInt("sliders5", sliders[4].getProgress());
editor.putInt("sliders6", sliders[5].getProgress());
editor.putInt("sliders7", sliders[6].getProgress());
editor.putInt("sliders8", sliders[7].getProgress());
editor.putInt("sliders9", sliders[8].getProgress());
editor.putInt("sliders10", sliders[9].getProgress());
editor.putInt("bass_boost", bass_boost.getProgress());
editor.commit();
return min_level - max_level;
}

試行 3:

  public int getProgress(){

 SharedPreferences sp = getSharedPreferences("sliders", MODE_PRIVATE);
 for (int i = 0; i < num_sliders && i < MAX_SLIDERS; i++) {
     num_sliders = sp.getInt("sliders", 0);
 }
 num_sliders = sp.getInt("bass_boost", 0);
 return num_sliders;
 }

試行 4:

   public int getProgress2(){

    SharedPreferences sp = getSharedPreferences("sliders",   Activity.MODE_PRIVATE);
     num_sliders = sp.getInt("sliders1", -1);
     num_sliders = sp.getInt("sliders2", -1);
     num_sliders = sp.getInt("sliders3", -1);
     num_sliders = sp.getInt("sliders4", -1);
     num_sliders = sp.getInt("sliders5", -1);
     num_sliders = sp.getInt("sliders6", -1);
     num_sliders = sp.getInt("sliders7", -1);
     num_sliders = sp.getInt("sliders8", -1);
     num_sliders = sp.getInt("sliders9", -1);
     num_sliders = sp.getInt("sliders10", -1);
     num_sliders = sp.getInt("bass_boost", -1);
     return num_sliders;
}

アプリの更新を展開する必要があるため、どんな助けも大歓迎です!

ありがとうございました。

4

2 に答える 2

1

これは古い質問であることは知っていますが、これに 2 時間を無駄にしただけなので、誰かが同じ問題に遭遇した場合に備えて答えを出すこともできます。

アプリのキル/デバイスの再起動後も設定を適切に維持するために私がしなければならなかったことは次のとおりです。

  1. エディタを使用して古い値を削除します
  2. 専念
  3. 新しい値を入れる
  4. 専念

たとえば、次のようになります。

SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.remove(Constants.PREF_STARTED_EXPERIMENTS);
        editor.commit();

        editor.putStringSet(Constants.PREF_STARTED_EXPERIMENTS, experiments);
        editor.commit();

誰かの時間を節約できることを願っています。

于 2015-06-03T09:33:27.110 に答える
0

問題は、設定ファイルに null 値が保存されている可能性があります。この回答で問題が解決するかどうか試してください。

于 2014-04-28T14:24:00.497 に答える