直到最近我才使用 View 的标签元素,此后发现了一些很酷的用途。我遇到了一个不寻常的问题,希望有人能回答。这可能比 Android 更通用,但我不确定。它与 Java 如何处理 Integer 类有关。
请参阅这些方法位。事实上,这工作正常。您可以假设这里的 POSITIVE 和 NEGATIVE 是常量。
public void onClick(View v) {
switch(v.getId()){
case R.id.dialog_addrecord_button_sign:
Sign mSign = (Sign) v.getTag();
if(mSign.sign == NEGATIVE){
((Button) v).setText("+");
mSign.sign = POSITIVE;
} else {
((Button) v).setText("-");
mSign.sign = NEGATIVE;
}
break;
}
};
private void initButtons(){
signButton = (Button) findViewById(R.id.dialog_addrecord_button_sign);
signButton.setOnClickListener(this);
signButton.setTag(new Sign());
}
private class Sign {
int sign;
private Sign(){
sign = NEGATIVE;
}
}
不过,我意识到我可以只使用 Integer 类,而不是考虑仅具有单个字段的自定义类。我对此进行了更改,但是该按钮仅切换一次,告诉我关于 Java 如何处理 Integer 类,有些事情我不知道...有人可以告诉我为什么这不起作用吗?
public void onClick(View v) {
switch(v.getId()){
case R.id.dialog_addrecord_button_sign:
Integer sign = (Integer) v.getTag();
if(sign == NEGATIVE){
((Button) v).setText("+");
sign = POSITIVE;
} else {
((Button) v).setText("-");
sign = NEGATIVE;
}
break;
}
};
private void initButtons(){
signButton = (Button) findViewById(R.id.dialog_addrecord_button_sign);
signButton.setOnClickListener(this);
signButton.setTag(new Integer(NEGATIVE));
}
最佳答案
您没有发布 POSITIVE 和 NEGATIVE 的定义位置,但我想您应该检查相等性而不是对象标识。第一个答案this question基本上解释了这一点。
简而言之:使用 sign.equals(NEGATIVE)
代替。
关于java - 用作 View 标签的整数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282432/