直到最近我還沒有使用視圖的標記元素,並且從那以後就發現了一些很酷的用法。我遇到了一個不尋常的問題,希望有人能夠回答。這可能比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));
}
我正在添加由編輯器刪除的Java標記。答案尤其與Java相關。 – Maximus 2012-02-14 19:52:55