android - 切换紧凑型 Android SharedPreferences 不起作用
问题描述
以下代码中的 SharedPreferences 不能按要求工作。我哪里错了?SharedPreferences 在单击时保存,并且在我的 Android 活动中检索 OnCreate 和 OnResume 的值也是如此。
代码:
mySwitch = (SwitchCompat) findViewById(R.id.atten);
strttime = (TextView) findViewById(R.id.textView5);
endtime = (TextView) findViewById(R.id.textView6);
SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
silent = settings.getBoolean("switchkey", false);
mySwitch.setChecked(silent);
mySwitch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final SwitchCompat btn = (SwitchCompat) v;
final boolean switchChecked = silent;
String message = "Are you sure you want to Logout?";
if (!btn.isChecked()) {
message = "Are you sure you want to Login?";
}
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this, R.style.MyAlertDialogStyle); // Change "this" to `getActivity()` if you're using this on a fragment
builder.setMessage(message).setPositiveButton("Ok", new DialogInterface.OnClickListener() {@Override
public void onClick(DialogInterface dialog, int i) {
// "Yes" button was clicked
if (switchChecked) {
Log.d("You are :", "Checked");
SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("switchkey", true);
editor.apply();
} else {
SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("switchkey", false);
editor.apply();
}
}
}).setNegativeButton("Cancel", null).show();
}
});
解决方案
为什么您似乎有两个不同的SwitchCompat
视图,称为mySwitch
和btn
?很难说出你想要完成什么。
不管怎样,试试这个来获取状态SwitchCompat
:
builder.setMessage(message)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("switchkey", mySwitch.isChecked());
//or maybe you want btn.isChecked()? I don't know
editor.apply();
}
推荐阅读
- android - 对 Constraint-Layout 2 的更新会破坏工作布局
- keras - 使用动态长度音频构建 Keras LSTM 音频分类器
- firebase - 无效参数:在 URI 文件中未指定主机:///null
- node.js - 如何在我的响应中返回捕获的错误?(AWS Lambda 节点.js 14)
- java - Java内存缓存
- c - 三元运算符的第一个表达式中的赋值运算符如何处理?
- google-analytics - Google Analytics - 实时数据不可用于主机名过滤器
- angular - 如何测试从服务接收 Observable 的属性值
- shopify - shopify-buy SDK 无法结帐或将商品添加到购物车了
- android - 如何在 TMapView 中使用样式化地图