2016-04-11 1 views
-3

Я проверил подобные вопросы и отметил, кажется, работает. Я не могу понять, в чем проблема. Значение переходит в 0 после каждого перезапуска приложения или переключателя активности.Общие предпочтения в Android не сохраняются, когда я переключаю активность или закрываю приложение

//just parts of code from activity1 
      SharedPreferences pref; 
      SharedPreferences.Editor editor; 
// On create.... 
      pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
      editor = pref.edit(); 
      max=pref.getInt("mxtime", 0); 

//If something>something... 
      editor.putInt("mxtime", max); 
      editor.commit(); 

В первой части я объявляю SharedPreferences в основной деятельности. Я сохраняю его в «max» int и всегда всегда 0 при запуске, так как если пустое значение равно 0. При втором действии у меня есть кнопка, где при нажатии она должна очистить значение от SharedPreferences.

активность 2:

public class settings extends AppCompatActivity { 
private Button myButton; 
private Button myButton2; 
private Button myButton3; 
//sharedPrefs 
SharedPreferences pref; 
SharedPreferences.Editor editor; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_settings); 

    pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
    editor = pref.edit(); 
    myButton = (Button) findViewById(R.id.button3); 
    myButton2 = (Button) findViewById(R.id.button4); 
    myButton3 = (Button) findViewById(R.id.button5); 

    myButton.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v) { 
      Intent i = new Intent(getApplicationContext(),MainActivity.class); 
      startActivity(i); 


     } 
    }); 
    myButton2.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v) { 
      //sharedPrefs 
      editor.remove("mxtime"); 
      editor.commit(); 


     } 
    }); 
} 

}

+0

** Почему ** вы удалите предпочтения от ваших предпочтений 'editor.remove ("mxtime");'? И ** где ** вы устанавливаете значение для 'max'? –

+0

Я установил значение для max непосредственно перед сохранением его в SharedPrefs. И я изменил editor.remove на editor.clear(). – ScaredFace

+0

** Почему ** вы удаляете все предпочтения из своих настроек 'editor.clear();'? И ** которое ** является значением, которое вы назначаете 'max'? –

ответ

0

Попробуйте использовать SharedPreferences так:

SharedPreferences preferences = getApplicationContext().getSharedPreferences("loginPref", MODE_PRIVATE); 
SharedPreferences.Editor editor = preferences.edit(); 
+0

Это сработало, когда я попробовал его, затем я попробовал его второй раз, и он снова вернулся к 0. Я не могу понять, что происходит не так – ScaredFace

+0

попробуйте использовать editor.apply() вместо commit() –

+0

Пробовал и ничего не работает ... – ScaredFace

0

активность 1:

SharedPreferences sp = getSharedPreferences("YourSharedPreference", Activity.MODE_PRIVATE); 
SharedPreferences.Editor editor = sp.edit(); 
int DEFAULT_VALUE = 0; 
editor.putInt("VARIABLE_KEY", DEFAULT_VALUE); 

//If something > something.. 

int VALUE_TO_PASS = <your value here>; 
editor.putInt("VARIABLE_KEY", VALUE_TO_PASS); 

// Before screen shift 

editor.commit(); 

....... ....................................

активность 2:

SharedPreferences sp = getSharedPreferences("YourSharedPreference", Activity.MODE_PRIVATE); 
int DEFAULT_FALLBACK_VALUE = 0; //When value is not received, show this 

int VALUE_PASSED = sp.getInt("VARIABLE_KEY", DEFAULT_FALLBACK_VALUE); 

// On button click: 

int DEFAULT_VALUE = 0; 
editor.putInt("VARIABLE_KEY", DEFAULT_VALUE); 
editor.commit();