Android SharedPreferences недоступен в Main, другие действия в порядке? - PullRequest
1 голос
/ 05 мая 2011

У меня есть некоторые данные, сохраненные в моей SharedPreferences, но когда я пытаюсь получить к ним доступ в Главной части моего приложения, файл 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>

Заранее спасибо !!

Ответы [ 3 ]

4 голосов
/ 05 мая 2011

Попробуйте:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

и посмотрите, будет ли это работать лучше.

2 голосов
/ 14 июля 2014

Я знаю, что на вопрос уже был дан правильный ответ, но я решил, что буду замечать для будущих посетителей ту же проблему, что и у меня: есть хитрый маленький метод .commit(), который нужно добавить в конец любого редактирования SharedPreference.

0 голосов
/ 05 мая 2011

С getPreferences(mode) вы получаете настройки по умолчанию, вы уверены, что загрузили в него данные? Лучшее использование getSharedPreferences(name, mode) с именем будет определенной строковой константой.

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