Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio-(最终)函数参数_Java_Android_Variables_Android Button_Final - Fatal编程技术网

Java Android Studio-(最终)函数参数

Java Android Studio-(最终)函数参数,java,android,variables,android-button,final,Java,Android,Variables,Android Button,Final,所以我试图在没有合适的学习资源的情况下学习Java。我有一个有3个按钮的代码,我想做一个有2个参数的函数,可以改变它们的文本和bool变量,但这似乎是不可能的,因为它们需要声明为final boolean btn1Check = false; boolean btn2Check = false; boolean btn3Check = false; public void setButton(final Button b, final boolean check) { b.setOnC

所以我试图在没有合适的学习资源的情况下学习Java。我有一个有3个按钮的代码,我想做一个有2个参数的函数,可以改变它们的文本和bool变量,但这似乎是不可能的,因为它们需要声明为final

boolean btn1Check = false;
boolean btn2Check = false;
boolean btn3Check = false;

public void setButton(final Button b, final boolean check) {
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (check == true) {
                b.setText("FALSE");
                check = false; //HERE IS THE ERROR
            }
        }
    });
}

如果我不声明这些最终结果,它会给我一个不同的错误。我不知道该怎么办。

发生这种情况是因为无法从内部类更改变量的值。此外,更改
check
变量的值没有意义,因为它的范围以
setButton
方法执行结束

如果要更改
按钮
状态,则应操作按钮本身,如:

b.setChecked(false);

好的,我试着帮你解释一下你的代码:

public void setButton(final Button b, final boolean check) {
b.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (check == true){
            b.setText("FALSE");
            check = false; //HERE IS THE ERROR
        }
        else{

        }
    }
});
}

你调用b.setOnClickListener(new…)我使用了常规按钮,我得到一个错误,说它无法解析setChecked和ischecked方法你是对的。无法检查
按钮
。改用
复选框
。很抱歉或者从Button派生出自己的Button类,并使用选中的
字段对其进行扩展。我更新了我的答案以向您显示代码。
public void setButton(final Button b) {
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (b.isChecked()){
                b.setText("FALSE");
                b.setChecked(false);
            }
            else{

            }
         }
    });
}
public void setButton(final Button b) {
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            b.setChecked(!b.isChecked());
            b.setText(String.valueOf(b.isChecked());
         }
    });
}
b.setChecked(!b.isChecked());
public class CheckButton extends Button {
    private boolean checked = false;
    public boolean isChecked { return checked; }
    public void setChecked(boolean checked) { this.checked = checked; }
}