Подтвердить что ты не робот

Получить общее значение общих настроек Android в действии/нормальном классе

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

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.

Просьба предоставить решение.

4b9b3361

Ответ 1

Если у вас есть 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, ""));

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

mContext.getSharedPreferences(PREF_NAME, MODE_PRIVATE);

Ответ 2

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

        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" );.

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

Ответ 3

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

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
    }