我正在开发一个测验应用程序,其中我有3个按钮。
我正在比较ex Ans_1.getTag() == "1"
按钮的每个按钮标记值,但它总是给我错误。
这是我的代码
我在这里设置标签值
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块中都没有比较。任何人都可以告诉我这里我做错了什么。
提前致谢
答案 0 :(得分:1)
你应该使用.equals方法来比较两个对象
if(obj1.equals(obj2)) {
..
}
在你的情况下(看到标签包含一个字符串),你应该使用:
if(Ans_1.getTag().toString().equals("1")) {
..
}
或更简单..
if(Ans_1.getTag().equals("1")) {
..
}
答案 1 :(得分:0)
您必须覆盖等于功能(以及其他功能)才能将其用于自定义类。
equals方法比较对象。
== 二元运算符会比较mem地址。
所以改变这个
if(Ans_1.getTag() == "1")
到
if(Ans_1.getTag().toString().equals("1"))
和Ans_2
和Ans_3
按钮相同