Мне нужно сохранить некоторые переменные моей основной активности, когда пользователь переходит на другие страницы (действия) моего приложения. Официальная ссылка (http://developer.android.com/reference/android/app/Activity.html#SavingPersistentState) предназначена для сохранения постоянного состояния с использованием следующего кода:
public class CalendarActivity extends Activity {
...
static final int DAY_VIEW_MODE = 0;
static final int WEEK_VIEW_MODE = 1;
private SharedPreferences mPrefs;
private int mCurViewMode;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences mPrefs = getSharedPreferences();
mCurViewMode = mPrefs.getInt("view_mode" DAY_VIEW_MODE);
}
protected void onPause() {
super.onPause();
SharedPreferences.Editor ed = mPrefs.edit();
ed.putInt("view_mode", mCurViewMode);
ed.commit();
}
}
Когда я реализовал эту часть кода в своем приложении (небольшая разница вместо ed.putInt я использую ed.putBoolean) и запустил ее, я получил ошибку в LOGCat.
10-21 15: 00: 42.956: ОШИБКА / AndroidRuntime (26590): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное
10-21 15: 00: 42.956: ОШИБКА / AndroidRuntime (26590):
java.lang.RuntimeException: невозможно приостановить активность
{Com.example.android.Pitbul / com.example.android.Soft.Commander}:
java.lang.NullPointerException 10-21 15: 00: 42.956:
ОШИБКА / AndroidRuntime (26590): в
android.app.ActivityThread.performPauseActivity (ActivityThread.java:2731)
10-21 15: 00: 42.956: ОШИБКА / AndroidRuntime (26590): в
android.app.ActivityThread.performPauseActivity (ActivityThread.java:2678)
10-21 15: 00: 42.956: ОШИБКА / AndroidRuntime (26590): в
android.app.ActivityThread.handleRelaunchActivity (ActivityThread.java:3259)
10-21 15: 00: 42.956: ОШИБКА / AndroidRuntime (26590): в
android.app.ActivityThread.access $ 1600 (ActivityThread.java:132) 10-21
15: 00: 42.956: ОШИБКА / AndroidRuntime (26590): в
android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1042)
... 10-21 15: 00: 42.956: ОШИБКА / AndroidRuntime (26590): вызвано:
java.lang.NullPointerException 10-21 15: 00: 42.956:
ОШИБКА / AndroidRuntime (26590): в
com.example.android.Soft.Commander.onPause (Commander.java:355) 10-21
15: 00: 42.956: ОШИБКА / AndroidRuntime (26590): в
android.app.Activity.performPause (Activity.java:4032) 10-21
15: 00: 42.956: ОШИБКА / AndroidRuntime (26590): в
android.app.Instrumentation.callActivityOnPause (Instrumentation.java:1337)
10-21 15: 00: 42.956: ОШИБКА / AndroidRuntime (26590): в
android.app.ActivityThread.performPauseActivity (ActivityThread.java:2708)
10-21 15: 00: 42.956: ОШИБКА / AndroidRuntime (26590): ... еще 12
Итак, ошибка происходит на
SharedPreferences.Editor ed = mPrefs.edit (); строка.
Почему это случилось? Что мне нужно, чтобы решить эту проблему? Мне действительно нужно сохранить некоторые переменные и прочитать их, когда пользователь вернется на главный экран активности.