我正在尝试使用以下代码在Java中创建一个简单的Android应用程序:
public class MainActivity extends Activity {
//Declare variables
boolean first = true;
boolean secondorbefore = true;
Button ClickMe = (Button) findViewById(R.id.clicker);
ClickMe.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Check to see if this is the first click
if (first = true) {
first = false;
// DO STUFF FOR FIRST CLICK
} else if ((secondorbefore = true) {
//so this is the second click?
secondorbefore = false;
// DO STUFF FOR SECOND CLICK
} else {
//OK it's the third click or later
// DO STUFF FOR THIRD OR LATER CLICKS
}
}
});
}
但是,它似乎只能在if条件下运行一次。它在第一个实例中执行代码,包括将secondorbefore变量设置为false,但后续的点击似乎什么都不做。代码OnClickListener正在后续点击中执行,但它没有运行条件语句。
Java新手,所以我可能犯了一个非常明显的错误。
非常感谢提前。
答案 0 :(得分:6)
<强>提示:强>
=
是一个赋值运算符。==
是一个相等运算符。答案 1 :(得分:4)
在if
条件下,您始终必须使用==
运算符进行比较,不单=
。所以它会是:
if (first == true) { // this is comparison
first = false; // this is assignment
// DO STUFF FOR FIRST CLICK
} else if ((secondorbefore == true) {
//so this is the second click?
secondorbefore = false;
// DO STUFF FOR SECOND CLICK
} else {
//OK it's the third click or later
// DO STUFF FOR THIRD OR LATER CLICKS
}
答案 2 :(得分:3)
如果您使用=
代替==
,则指定的是值而不是比较。而分配的回报就是分配的价值。所以在这种情况下它将是true
所以:
if(bool = true){...}
和
if(true){...}
在比较中是等价的。区别在于bool
将从此语句中携带新值。
答案 3 :(得分:2)
将此if (first = true)
更改为{ if (first == true) {
这里=是一个赋值运算符.But ==是相等运算符。
答案 4 :(得分:1)
当检查变量是否等于其他变量时,请始终使用==
即
public void onClick(View v) {
//Check to see if this is the first click
if (first == true) {
first = false;
// DO STUFF FOR FIRST CLICK
} else if ((secondorbefore == true) {
//so this is the second click?
secondorbefore = false;
// DO STUFF FOR SECOND CLICK
} else {
//OK it's the third click or later
// DO STUFF FOR THIRD OR LATER CLICKS
}
}