#android #sharedpreferences
#Android #общие ссылки
Вопрос:
У меня есть некоторые данные, сохраненные в моих SharedPreferences, но когда я пытаюсь получить к ним доступ в Main моего приложения, файл SharedPreferences пуст. Если я вызываю тот же точный код из любого другого моего действия, я могу получить доступ к данным просто отлично. есть идеи о том, в чем может быть проблема???
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SharedPreferences prefs = this.getPreferences(Context.MODE_PRIVATE);
int test = prefs.getInt("PREF_DIFFICULTY", 0);
}
используя отладчик eclipse, я вижу, что карта, поддерживающая объект pref, пуста, но когда я просматриваю эту карту из других действий, она полна данных … очень странно. Вот мой манифест на всякий случай, если это имеет значение.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.dawghouse.dd"
android:versionCode="1" android:versionName="1.0">
<application android:label="@string/app_name" android:icon="@drawable/icon">
<activity android:name=".activity.Main" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activity.BlockOutgoing" android:label="@string/outgoingTitle" />
<activity android:name=".activity.BlockIncoming" android:label="@string/incomingTitle" />
<activity android:name=".activity.TimeManager" android:label="@string/timeManagerTitle" />
<activity android:name=".activity.Preferences" android:label="@string/preferences" />
</application>
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
</manifest>
заранее спасибо!!
Ответ №1:
Попробуйте:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
и посмотрите, работает ли это лучше.
Ответ №2:
Я знаю, что на вопрос уже был дан правильный ответ, но я подумал, что хотел бы отметить для будущих посетителей, сталкивающихся с той же проблемой, что и у меня: есть маленький хитрый .commit()
метод, который нужно добавлять в конец любого редактирования SharedPreference.
Ответ №3:
getPreferences(mode)
Вы получаете настройки по умолчанию, вы уверены, что загрузили в них данные? Лучше использовать getSharedPreferences(name, mode)
с name будет определенная строковая константа.
Комментарии:
1. Да, я знаю, что я поместил в него данные, поскольку я могу получить доступ к данным из других действий. в любом случае было бы неплохо назвать мой файл предпочтений, чтобы я, возможно, в какой-то момент пошел по этому пути, спасибо за совет.