我正在开发一个测验应用程序,其中我有3个按钮。我比较了前Ans_1.getTag() == "1"
按钮的每个按钮标签值,但它总是给我false。
这是我的代码
我在这里设置标签值
Ans_1.setTag(is_right_choice[0].toString());
Ans_2.setTag(is_right_choice[1].toString());
Ans_3.setTag(is_right_choice[2].toString());
is_right_choice[0].toString()
这个值来自json响应但是当我比较它
if(Ans_1.getTag() == "1")
{
Ans_2.setBackgroundColor(Color.GREEN);
Ans_1.setEnabled(false);
Ans_2.setEnabled(false);
Ans_3.setEnabled(false);
points.setText("+1 Punkt");
is_button_click = true;
isCancelled = true;
}
else
{
if(Ans_2.getTag() == "1")
{
Ans_1.setBackgroundColor(Color.GREEN);
Ans_2.setBackgroundColor(Color.YELLOW);
Ans_1.setEnabled(false);
Ans_2.setEnabled(false);
Ans_3.setEnabled(false);
points.setText("0 Punkt");
is_button_click = true;
isCancelled = true;
}
if(Ans_3.getTag() == "1")
{
Ans_3.setBackgroundColor(Color.GREEN);
Ans_2.setBackgroundColor(Color.YELLOW);
Ans_1.setEnabled(false);
Ans_2.setEnabled(false);
Ans_3.setEnabled(false);
points.setText("0 Punkt");
is_button_click = true;
isCancelled = true;
}
}
在任何if块中都不比较。谁能告诉我我哪里做错了?
thanks in advance
你应该使用。equals方法来比较两个对象
if(obj1.equals(obj2)) {
..
}
在您的例子中(看到标记包含一个字符串),您应该使用:
if(Ans_1.getTag().toString().equals("1")) {
..
}
或更简单的…
if(Ans_1.getTag().equals("1")) {
..
}
您必须重写equals函数(以及其他函数)才能在自定义类中使用它。
equals方法比较对象。
==二进制运算符比较mem地址。
所以改变这个
if(Ans_1.getTag() == "1")
if(Ans_1.getTag().toString().equals("1"))
, Ans_2
和Ans_3
按钮相同