我正在将SharedPreferences集成到我的App代码中。.
我选择使用Preferences API
和PreferenceFragment
。
不幸的是,在context
等内部引用“ Fragment
”时遇到了一些麻烦。
我也不太清楚如何在ChangeListener中编写代码。
“设置/首选项”屏幕看起来很完美,但是在用户更改首选项的基础上,我在更改App的行为方式时遇到问题。
这里是一个例子。
我的目标是在用户更改首选项时启用/禁用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
语句,并且可以使用帮助来更正它。
任何帮助深表感谢!我非常需要帮助解决此问题。
谢谢:)