0

我正在尝试ToggleButton在一个名为 的新类中扩展该类TagToggleButton,其唯一区别在于它有一个我可以设置与之关联的 ID。该类TagToggleButton如下所示:

public class TagToggleButton extends ToggleButton {

    private long tagId;

    public TagToggleButton(Context context) {
        super(context);
    }

    public TagToggleButton(Context context, long id) {
        super(context);
        this.setTagId(id);
    }

    public void setTagId(long id) {
        this.tagId = id;
    }

    public long getTagId() {
        return this.tagId;
    }

}

然后我想调用一个 OnClickListener 来获取按钮的 ID 属性。例如:

tag.setOnCheckedChangeListener(new TagToggleButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked) {
            long id = buttonView.getTagId();
            // will do something with id afterwards
        } else {
            //Will do something else if the button isn't checked
        }
    }

但是,我不能调用getTagIdbuttonView因为它被定义为CompoundButton. 如何更改buttonViewTagToggleButton(即如何OnCheckedChangeListener在我的方法中覆盖类TagToggleButton

非常感谢!

4

1 回答 1

0

onCheckedChanged方法内部强制CompoundButton buttonView转换为TagToggleButton。要获取标签 ID,您可以执行类似的操作long id = ((TagToggleButton) buttonView).getTagId();

于 2015-04-07T18:24:54.953 回答