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