Как получить ShareDPreferences от предпочтительности в Android?
-
26-09-2019 - |
Вопрос
Я использую предпочтение, чтобы показать некоторые настройки для моего приложения. Я надуваю настройки через XML-файл, чтобы мой oncreate (и полный методы класса) выглядит так:
public class FooActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.preference);
}
}
Джавадок Предпочтениецективность ПредпочтениеFragment. говорится, что
Эти предпочтения автоматически сохранят для SharedPreferences, так как пользователь взаимодействует с ними. Чтобы получить экземпляр ShareDPreferences, которые используют иерархию предпочтения в этой деятельности, вызовите GetDefaultSharedPreferences (Android.content.context) с контекстом в том же пакете, что и в качестве этой деятельности.
Но как я получаю название ShareDPrefereference в другой активности? Я могу звонить только только
getSharedPreferences(name, mode)
в другой деятельности, но мне нужно название ShareDPreference, которое использовалось предпочтительностью. Как зовут или как я могу его получить?
Решение
import android.preference.PreferenceManager;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
// then you use
prefs.getBoolean("keystring", true);
Обновлять
Согласно с Общие предпочтения |. Учебник разработчика Android (часть 13) Sai Geetha Mn,
Многие приложения могут предоставить способ захватывать пользовательские настройки в настройках конкретного приложения или действия. Для поддержки этого Android предоставляет простой набор API.
Предпочтения, как правило, используются пары значений. Их можно хранить как «общие предпочтения» в различных мероприятиях в приложении (обратите внимание, что в настоящее время его нельзя обделить процессы). Или это может быть то, что нужно хранить специфические для деятельности.
Общие предпочтения: Общие предпочтения могут использоваться всеми компонентами (действиями, сервисами и т. Д.) приложений.
Предпочтения обработки активности: эти предпочтения могут использоваться только в пределах конкретной активности и не могут быть использованы другими компонентами приложения.
Общие предпочтения:
Общие предпочтения управляются с помощью getSharedPreferences
метод Context
сорт. Настройки хранятся в файле по умолчанию (1) Или вы можете указать имя файла (2) использоваться для обозначения предпочтений.
(1) Рекомендуемый путь это использовать по режиму по умолчанию, не указав имя файла
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
(2) Вот как вы получите экземпляр при укажете имя файла
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE
это режим работы для предпочтений. Это режим по умолчанию и означает, что созданный файл будет доступен только по приложению вызова. Другие поддерживаются два режима MODE_WORLD_READABLE
а также MODE_WORLD_WRITEABLE
. Отказ В MODE_WORLD_READABLE
Другое приложение может прочитать созданный файл, но не может его изменить. В случае MODE_WORLD_WRITEABLE
Другие приложения также имеют разрешения на запись для созданного файла.
Наконец, как только у вас есть экземпляр предпочтения, вот как вы можете Получить хранимые значения из предпочтений:
int storedPreference = preferences.getInt("storedInt", 0);
К Значения хранения В файле предпочтения SharedPreference.Editor
Объект должен быть использован. Editor
это вложенный интерфейс в SharedPreference
сорт.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Редактор также поддерживает такие методы, как remove()
а также clear()
Чтобы удалить значения предпочтения из файла.
Предпочтения деятельности:
Общие предпочтения могут использоваться другими компонентами приложения. Но если вам не нужно делиться предпочтениями с другими компонентами и хотите иметь деятельность частных предпочтений, вы можете сделать это с помощью getPreferences()
метод деятельности. То getPreference
Метод использует getSharedPreferences()
Способ с именем класса активности для имени файла предпочтения.
Ниже приведен код для получения предпочтений
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
Код для хранения значений также такой же, как в случае общих предпочтений.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Вы также можете использовать другие методы, такие как хранение состояния активности в базе данных. Примечание Android также содержит пакет под названием android.preference
. Отказ Пакет определяет классы для реализации пользовательских настроек приложений.
Чтобы увидеть еще несколько примеров Проверьте Android Хранилище данных пост на сайт разработчиков.
Другие советы
Если у вас нет доступа к getDefaultSharedPreferenes()
, вы можете использовать getSharedPreferences(name, mode)
Вместо этого вам просто нужно пройти правильное имя.
Android создает это имя (возможно, основано на имени пакета вашего проекта?). Вы можете получить это, поместив следующий код в SettingsActivity
onCreate()
, и видя, что preferencesName
является.
String preferencesName = this.getPreferenceManager().getSharedPreferencesName();
Строка должна быть что-то вроде com.example.projectname_preferences
. Отказ Трудный код, который где-то в вашем проекте, и передать его getSharedPreferences()
И вы должны быть хороши, чтобы пойти.
Объявить эти методы сначала ..
public static void putPref(String key, String value, Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(key, value);
editor.commit();
}
public static String getPref(String key, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(key, null);
}
Затем назовите это, когда вы хотите поставить преф:
putPref("myKey", "mystring", getApplicationContext());
Позвоните это, когда вы хотите получить префис:
getPref("myKey", getApplicationContext());
Или Вы можете использовать этот объект https://github.com/kcochibili/tinydb-android-shared-preferences-turbo. что упрощает все еще дальше
Пример:
TinyDB tinydb = new TinyDB(context);
tinydb.putInt("clickCount", 2);
tinydb.putFloat("xPoint", 3.6f);
tinydb.putLong("userCount", 39832L);
tinydb.putString("userName", "john");
tinydb.putBoolean("isUserMale", true);
tinydb.putList("MyUsers", mUsersArray);
tinydb.putImagePNG("DropBox/WorkImages", "MeAtlunch.png", lunchBitmap);
Чтобы пройти контекст вокруг везде действительно раздражает меня. Код становится слишком многослойным и неуправляемым. Я делаю это в каждом проекте вместо этого ...
public class global {
public static Activity globalContext = null;
и установить его в главной деятельности создать
@Override
public void onCreate(Bundle savedInstanceState) {
Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler(
global.sdcardPath,
""));
super.onCreate(savedInstanceState);
//Start
//Debug.startMethodTracing("appname.Trace1");
global.globalContext = this;
Также все клавиши предпочтений должны быть независимыми языками, я в шоке, никто не упомянул.
getText(R.string.yourPrefKeyName).toString()
Теперь назовите это очень просто так в одной строке кода
global.globalContext.getSharedPreferences(global.APPNAME_PREF, global.MODE_PRIVATE).getBoolean("isMetric", true);
Если у вас есть флажок, и вы хотели бы получить его значение, т.е. true / false в любом файле java--
Использовать--
Context mContext;
boolean checkFlag;
checkFlag=PreferenceManager.getDefaultSharedPreferences(mContext).getBoolean(KEY,DEFAULT_VALUE);`
Обновлено 2019.
Вы можете просто использовать PowerPreference
библиотека
https://github.com/aliesaassadi/android-power-preeference.
Получение общих приспособлений
Чтобы применить экземпляр по умолчанию, вам просто нужно позвонить
PowerPreference.getDefaultFile()
Или если вы хотите определенный файл предпочтения
PowerPreference.getFileByName(fileName)
Написание данных:
PowerPreference.getDefaultFile().put(key,value)
Получение данных
PowerPreference.getDefaultFile().getString(key,value)