Получить значение общих настроек Android в классе деятельности / обычном - PullRequest
31 голосов
/ 21 сентября 2011

Я выполнил действие с общими предпочтениями, в котором хранятся пользовательские настройки, теперь я хочу получить значения в классе активности или обычном классе Java. Пожалуйста, предоставьте решение или пример, который я уже пробовал в этом коде, но не смог.

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    SharedPreferences channel=this.getSharedPreferences(strFile, Context.MODE_PRIVATE);
    strChannel=channel.getString(keyChannel,"Default").toString();
    Toast.makeText(getApplicationContext(), strChannel, Toast.LENGTH_LONG).show();
}                     

в этом коде strfile например.com.android.pack.ClassName - это SharedPreference Activity из значений, которые необходимо извлечь, а keyChannel - это ключ, который совпадает с SharedPreference Activity.

. Пожалуйста, предоставьте решение.

Ответы [ 4 ]

66 голосов
/ 21 сентября 2011

Если у вас есть SharedPreferenceActivity, с помощью которого вы сохранили свои значения

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String imgSett = prefs.getString(keyChannel, "");

если значение сохраняется в SharedPreference в Activity, то это правильный способ его сохранения.

SharedPreferences shared = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = shared.edit();
editor.putString(keyChannel, email);
editor.commit();// commit is important here.

и вот как вы можете получить значения.

SharedPreferences shared = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
String channel = (shared.getString(keyChannel, ""));

Также имейте в виду, что вы можете делать это и в классе, не относящемся к Деятельности, но единственное условие - вам необходимо передать контекст Действия. используйте этот контекст для получения SharedPreferences.

mContext.getSharedPreferences(PREF_NAME, MODE_PRIVATE);
4 голосов
/ 04 октября 2015

Я попробовал этот код, чтобы получить общие настройки из действия, и не смог заставить его работать:

        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    sharedPreferences.getAll();
    Log.d("AddNewRecord", "getAll: " + sharedPreferences.getAll());
    Log.d("AddNewRecord", "Size: " + sharedPreferences.getAll().size());

Каждый раз, когда я пытался, мои предпочтения возвращались 0, хотя у меня есть 14 предпочтений, сохраненных действием предпочтений. Я наконец нашел ответ. Я добавил это в настройки в разделе onCreate.

getPreferenceManager () setSharedPreferencesName ( "defaultPreferences");.

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

1 голос
/ 21 июля 2012

Это процедура, которая мне кажется самой простой:

SharedPreferences sp = getSharedPreferences("MySharedPrefs", MODE_PRIVATE);
SharedPreferences.Editor e = sp.edit();

    if (sp.getString("sharedString", null).equals("true")
            || sp.getString("sharedString", null) == null) {
        e.putString("sharedString", "false").commit();
        // Do something
    } else {
        // Do something else
    }
0 голосов
/ 11 августа 2018

Вы используете деинсталляцию приложения и меняете имя sharedPreferences, затем запускаете это приложение.Я думаю, что это решит проблему.

Пример кода для извлечения значений из sharedPreferences, вы можете использовать следующий набор кода,

SharedPreferences shared = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
String channel = (shared.getString(keyValue, ""));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...