Проблема с общими предпочтениями в приложении для Android - PullRequest
0 голосов
/ 08 августа 2011

в моем приложении у меня есть три действия, названные Home, SignIn и Add Page.

На моем домашнем экране я объявил настройку Shared следующим образом:

   Idprefs = PreferenceManager.getDefaultSharedPreferences(this);
   int UserId = Idprefs.getInt("useridValue", 0);

If UserId ==0 я перехожу в активность входа или в AddPage

В моей активности входа пользователь должен ввести имя и пароль, с сервера я получаю идентификатор в XML-файле, который я анализирую и сохраняюобщее предпочтение.

Чтобы использовать это значение в других действиях, я объявил его следующим образом

public static SharedPreferences Idprefs;

в моем методе oncreate у меня есть

Idprefs = PreferenceManager.getDefaultSharedPreferences(this);

из моегопроанализированные значения, которые я сохраняю в общих настройках

SharedPreferences.Editor editor = Idprefs.edit();
editor.putInt("useridValue", userid);
editor.commit();

В моем третьем действии у меня есть следующее

int User = SignIn.Idprefs.getInt("useridValue",0);

здесь я использую значение пользователя для других целей.

Теперь проблема в том, что все вышеупомянутые функции работают правильно в первый раз, когда приложение, которое я запустил, то есть оно будет выглядеть как

HomeScreen--> SignIn --> AddPage

Но когда приложение закрыто и открыто во второй раз, потокследует

HomeScreen --> AddPage

Теперь приложение выходит из строя, и я logcat ссылается на следующую строку в AddPage Activity

 int User = SignIn.Idprefs.getInt("useridValue",0);

Второй раз, когда страница входа не вызывается, поэтому происходит сбой.Как я могу получить сохраненную стоимость в других видах деятельности, пожалуйста, помогите мне

Ответы [ 2 ]

0 голосов
/ 08 августа 2011

Доступ к настройкам осуществляется через класс, который не был создан (SignIn):

int User = SignIn.Idprefs.getInt("useridValue",0);

И, следовательно, вероятно, NULL.

Это плохая практика, чтобы получить доступ к членам класса (особенно, когда контекст включен) таким образом. Просто создавайте их каждый раз в своей текущей деятельности.

0 голосов
/ 08 августа 2011

Получаете ли вы доступ к общим настройкам после вызова super.onCreate () в вашей активности?В противном случае это приведет к ошибкам и вызовет сбой приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...