Java 检查按钮是否被单击的布尔值由于某种原因不起作用

Java 检查按钮是否被单击的布尔值由于某种原因不起作用,java,android-studio,Java,Android Studio,我一直在这个论坛上搜索如何使一个布尔值在点击时切换为true。在我的程序中,我有两个按钮:Yes和no。当我单击它们时,在onClick方法中,布尔值切换为true,但在代码的其余部分,它保持为false 代码: 为什么会发生这种情况?我该如何解决呢?您正在使用相同名称的按钮和静态布尔值,并且在onclick处理程序中,您似乎使用了一些具有局部作用域的变量 我想这应该行得通: public class MainActivity extends AppCompatActivity { s

我一直在这个论坛上搜索如何使一个布尔值在点击时切换为true。在我的程序中,我有两个按钮:Yes和no。当我单击它们时,在
onClick
方法中,布尔值切换为true,但在代码的其余部分,它保持为false

代码:


为什么会发生这种情况?我该如何解决呢?

您正在使用相同名称的按钮和静态布尔值,并且在onclick处理程序中,您似乎使用了一些具有局部作用域的变量

我想这应该行得通:

public class MainActivity extends AppCompatActivity {

    static boolean yesClicked = false;
    static boolean noClicked  = false;

    @Override 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Button comment = findViewById(R.id.comment);
        final Button yes = findViewById(R.id.yes);
        final Button no  = findViewById(R.id.no);

        yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                yesClicked = true;
                noClicked  = false;
                // comment.setText("Yes clicked!" + yesClicked);
            }
        });

        no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                yesClicked = false;
                noClicked  = true;
                // comment.setText("No clicked! " + noClicked);
            } 
        });
    }
}

您好,您似乎需要提供一个,因为您的代码段缺少有关如何定义布尔变量的重要详细信息
yesisclicked
noisclicked
,以及如何在其余代码中引用它们。好,刚刚添加了一些相关代码。这有帮助吗?我在将其写入堆栈溢出时犯了一个错误。当然,布尔人的名字应该有所不同。我刚刚纠正了它。非常感谢你告诉我这个错误。现在代码已经写好了,就像他应该做的那样,问题仍然存在。。。我为我的错误感到非常抱歉。按钮没有更改…您的意思是您已经更正了代码,问题仍然存在,即布尔值
yesClicked
noClicked
仍然没有更改其值?可能问题是,onClick中生成了一个新的匿名类,并且代码对外部没有影响?否,内部类可以访问封闭类的静态字段。将调试消息添加到单击处理程序中,您应该会看到它们的值发生更改。“D/MainActivity:nohasbeenpressedinside”,在这里,当我按“否”时,只会记录内部按。你是说我应该这么做吗?
public class MainActivity extends AppCompatActivity {

    static boolean yesClicked = false;
    static boolean noClicked  = false;

    @Override 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Button comment = findViewById(R.id.comment);
        final Button yes = findViewById(R.id.yes);
        final Button no  = findViewById(R.id.no);

        yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                yesClicked = true;
                noClicked  = false;
                // comment.setText("Yes clicked!" + yesClicked);
            }
        });

        no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                yesClicked = false;
                noClicked  = true;
                // comment.setText("No clicked! " + noClicked);
            } 
        });
    }
}