Получить общее значение общих настроек 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
.
Просьба предоставить решение.
Ответы
Ответ 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
}