我有一个sharedPreference字段'mute',如果它的true是跳过按钮上的声音。我有一个复选框来将sharedPrefernce字段变为'true'或'false,但是,当选中/取消选中复选框时,效果不会发生,直到按下按钮,即其勾选为真(静音),下一个按钮发出声响,然后就停止了。
这是我的onclickListener
的代码CheckBox mute = findViewById(R.id.mute);
mute.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if (isChecked){
SharedPreferences sharedPref = getSharedPreferences("taxini", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("mute", "true");
editor.apply();
MUTE.equals("true");
}else {
SharedPreferences sharedPref = getSharedPreferences("taxini", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("mute", "false");
editor.apply();
MUTE.equals("false");
}
}
}
为什么它没有立即生效?在每个活动上,我有使用sharedPref加载的MUTE变量。它只是第一个按钮。 感谢。
答案 0 :(得分:0)
您确定两次调用方法onCheckedChanged()
吗? (两者都是“静音”和“取消静音”?)。
你可以在那里弹出System.out.println("test")
并查看。
答案 1 :(得分:0)
尝试使用普通侦听器,如下所示:
mute.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
CheckBox chk=(CheckBox)view;
if(chk.isChecked())
{
// ...
}
else
{
// ...
}
}
});
您也可以在监听器中使用isChecked()
方法:
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(buttonView.isChecked()) {
// ...