Intereting Posts
Принудительно сканировать файлы после съемки Как я могу определить, содержит ли замкнутый путь заданную точку? Adb remount разрешено, но доступно для доступа к суперпользователю в shell-android Скрыть заголовок ActionBarSherlock и показать только логотип Как узнать, включен ли экран с ADB Пользовательский метод getView () не вызывается Как получить быстрый файл Хеширующий алгоритм для больших файлов на мобильном устройстве Media Player, введите следующий URL-адрес Документация для андроидов Renderscript расширенный вызов rsForEach Android Studio не устанавливает последнее приложение на устройстве Android – Как загрузить изображение и использовать его в качестве нового ресурса? Скольжение, не загружающее реальное изображение и застрявшее с заполнителем Android: как реализовать рисунок поверх изображения Confused with removeAllViewsInLayout (), postInvalidate () и refreshDrawableState () Android: переменная имеет неправильное значение во время цикла

Как заставить PreferenceActivity работать с моими SharedPreferences?

Я использую SharedPreferences для хранения моих данных во всех Activities в моем приложении. Я получаю доступ к нему следующим образом:

 SharedPreferences mSharedPreferences = getSharedPreferences("MyPrefs", 0); 

Я внедрил PreferenceActivity чтобы пользователи могли изменять значения через него, но бывает, что он читает / записывает данные не в «MyPrefs», а в:

 PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

Что для меня немного неожиданно. Возможно ли заставить PreferenceActivity работать с моими предпочтениями «MyPrefs»? И в чем смысл иметь несколько предпочтений в одном приложении? Спасибо.

Я получаю доступ к нему, как это

Это нормально, если вы не планируете использовать PreferenceActivity .

Я реализовал PreferenceActivity, чтобы пользователи могли изменять значения через него

К сожалению.

Кроме того, избавьтесь от getApplicationContext() там, если у вас нет конкретной причины использования Application а не активности / службы / независимо. Используйте только объект Application когда вам нужно, и вы знаете, почему это необходимо.

Возможно ли заставить PreferenceActivity работать с моими предпочтениями «MyPrefs»?

Не легко. Если у вас нет определенной причины придумать свой собственный файл SharedPreferences , я бы использовал значение по умолчанию.

И в чем смысл иметь несколько предпочтений в одном приложении?

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

Это возможно и просто. Это сработало для меня

 public class SettingsActivity extends PreferenceActivity { @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getPreferenceManager().setSharedPreferencesName("MyPrefs"); //getPreferenceManager().setSharedPreferencesMode(MODE_WORLD_WRITEABLE); addPreferencesFromResource(R.xml.preferences); } } 

Я бы рекомендовал просто использовать PreferenceManager.getDefaultSharedPreferences (контекст) всюду, что совпадает с тем, что использует активность предпочтений. Но если вам нужно придерживаться вашей текущей настройки, тогда хакерское решение (но единственное, что я знаю) – переопределить getSharedPreferences, чтобы вернуть то, что вы хотите.

 @Override public SharedPreferences getSharedPreferences(String name, int mode) { return super.getSharedPreferences("MyPrefs", mode); }