java - 用作 View 标签的整数不起作用

标签 java android

直到最近我才使用 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/

相关文章:

Java List toArray(T[] a) 实现

java - EntityManagerFactory 已关闭

java - 整理compareTo方法中的if/else语句

Android:Spinner 抛出无法添加窗口 - token null 不适用于应用程序异常

java - 找不到资源 Jersey 2.x

java - Akka 分布式发布/订阅背压

java - Android 选择文件 Intent

java - Andengine 多人扩展 make 抛出错误,但在 Intellij IDEA 编辑器窗口中不显示

android - Android Studio 中不支持的类型 'add-resource'

android - Sqlite数据库查询编写