在按下按钮之前,变量不会改变

问题描述 投票:0回答:2

我有一个sharedPreference字段'静音',如果它的真实是跳过按钮上的声音。我有一个复选框来将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变量。它只是第一个按钮。谢谢。

java android
2个回答
0
投票

你确定两次调用方法onCheckedChanged()吗? (两者都是“静音”和“取消静音”?)。

你可以在那里弹出System.out.println("test")然后看看。


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()) {
        // ...
© www.soinside.com 2019 - 2024. All rights reserved.