android - 如何在 Android 上以编程方式打开 SwitchPreference
问题描述
我有一个设置片段,它加载一个带有默认设置页面的 xml,我还向一个特定的首选项添加了一个单击侦听器
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.settings);
preferences.findPreference(getString(R.string.pref_custom_list)).setOnPreferenceChangeListener(this);
//other stuff.....
这很好用,当用户单击触发事件时,我可以检查有关开关的一些信息,包括拒绝更改...
但是即使发生这种情况,我也想在同一屏幕上打开/关闭其他开关
我尝试过了
preferences.findPreference(getString(R.string.xpto)).setEnabled(true);
但它不会打开或关闭任何开关......它只是将视图设置为启用或禁用点击
如果我做类似的事情
PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean("xpto",true).apply();
它确实更改了首选项,但更改未加载到屏幕上,因此用户不知道
如何以编程方式打开或关闭某些首选项并使其反映到首选项屏幕
解决方案
您可以使用SwitchPreferenceCompat
.
<SwitchPreferenceCompat
app:key="key"
app:title="Some Confs" />
如果您SwitchPreferenceCompat
按上述方式使用,请在您的片段中尝试此操作。
SwitchPreferenceCompat switchPref = findPreference("key");
switchPref.setChecked(true);
推荐阅读
- python - 慢棋机器人,需要走得更快
- python - 如何根据 if else 语句数字条件在 Pandas 中获取新的输出数据帧
- javascript - 如何暂停渲染,直到在反应中获取数据
- android-recyclerview - RecyclerView 自定义 LayoutManager 移除不需要的视图
- mysql - MYSQL 中用户注册和第一次操作之间的平均时间
- flutter - 无法使用 SignalR 调用方法
- regex - 用于匹配类型注释的 Javascript 正则表达式
- hadoop - PigStorage() 不存储查询输出
- oracle - 在 Oracle 中高效查询
- r - 有人可以帮我正确设置我的 ggplot 图例吗?