2013-05-14 5 views
2

С SharedPreferences я хотел бы сохранить значение (которое будет позже дата последнего обновления) и загрузить его. Он работает хорошо, пока я не закрываю свой телефон или не закрываю приложение. Он сбрасывает значение.SharedPreferences, не сохраняющий значение

Вот код:

public class feedPlayer extends Activity 
{ 
    public final static String PARAM_USERDETAILS="userdetails"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     loadvars(); 
     savevars(); 
    } 

    public void savevars() 
    { 
     SharedPreferences parametres = this.getSharedPreferences(PARAM_USERDETAILS, MODE_PRIVATE); 
     Editor edit = parametres.edit(); 
     edit.clear(); 

     //Global.Maj = "maj" 

     TextView maj=(TextView) findViewById(R.id.datemaj); 
     edit.putString("gimli", Global.MAJ); 
     edit.commit(); 
     maj.setText(Global.MAJ); 
    } 

    public void loadvars() 
    { 
     SharedPreferences parametres = this.getSharedPreferences(PARAM_USERDETAILS, MODE_PRIVATE); 
     TextView maj=(TextView) findViewById(R.id.datemaj); 
     String Smaj = parametres.getString("gimli", Global.MAJ); 

     maj.setText(Smaj); 
    } 
} 
+0

попробуйте вызвать loadvars в методе onPause? –

+0

Копия пасты вашего кода отлично работала для меня в эмуляторе (даже после принудительного закрытия). Вы тестируете на устройстве? который из? – Sudhee

ответ

2

Используйте OnCreate() для загрузки данных и метод OnDestroy() для сохранения данных:

@Override 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     loadvars(); 
    } 

@Override 
protected void onDestroy() { 
     super.onDestroy(); 
     savevars(); 
} 

Вы также можете использовать: onResume() с методом onPause(), но этот два метода зарезервированы для процесса (запуск процесса в методе onResume(), остановка процесса в методе onPause())

+0

Я собираюсь попробовать! – omnisius

+0

Спасибо! Это сделал трюк! Не могу поверить, что это было так просто ... – omnisius

+0

@omnisius: Важно знать жизненный цикл деятельности;) – Jarvis

1

Вы вызываете метод() каждый раз, когда создается ваша деятельность в savevars. Это означает, что каждый раз, когда ваше приложение запускается.

В этом методе вы пишете всегда одинаковое значение в настройках: метод

edit.putString("gimli", Global.MAJ); 
edit.commit(); 
Смежные вопросы