Я в процессе интеграции SharedPreferences в код своего приложения.
Я решил использовать Preferences API
вместе с PreferenceFragment
.
К сожалению, у меняНемного проблем со ссылками на 'context
' из Fragment
и т. д.
Я также не могу понять, как писать код внутри ChangeListener.
Экран «Настройки / Настройки» выглядит идеально, но у меня возникают проблемы с изменением поведения моего приложения на основе изменения пользователем настроек.
Вот пример..
Моя цель - включить / отключить BroadcastReceiver, когда пользователь изменяет предпочтение:
public class SettingsFragment extends PreferenceFragment {
public static final String PREF_GPS_STATE_LISTENER = "pref_gpsStateListener";
private SharedPreferences.OnSharedPreferenceChangeListener preferenceChangeListener;
@Override
public void onCreate (@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
final SharedPreferences getPrefs =
PreferenceManager.getDefaultSharedPreferences(this.getActivity());
preferenceChangeListener =
new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged
(SharedPreferences sharedPreferences, String key) {
if (key.equals(PREF_GPS_STATE_LISTENER)) {
if (getPrefs.getBoolean(PREF_GPS_STATE_LISTENER)) {
context().getApplicationContext()
.getPackageManager().setComponentEnabledSetting
(component,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
}
}
};
}
}
Вот три проблемы, которые у меня возникают:
(1) - Не могу понять, как правильно ссылаться на «контекст» (в начале кода, используемого для включения BroadcastReceiver).
(2) - Как правильно ссылаться на переменную 'component' (в пределахта же строка кода, что и в предыдущем вопросе)?
(3) - Не думаю, что я правильно написал оператор if
и мог бы помочь исправить его.
Любая помощь очень ценится!Мне очень нужна помощь в исправлении этого.
Спасибо:)