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;
    }

}

次に、ボタンの ID プロパティを取得できるようにする OnClickListener を呼び出します。例えば:

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
        }
    }

ただし、 と定義されているためgetTagId呼び出すことはできません。の型に変更するにはどうすればよいですか (つまり、メソッド内でクラスをオーバーライドするにはどうすればよいですか?buttonViewCompoundButtonbuttonViewTagToggleButtonOnCheckedChangeListenerTagToggleButton

どうもありがとう!

4

1 に答える 1

0

メソッド内でto をonCheckedChangedキャストCompoundButton buttonViewTagToggleButtonます。タグIDを取得するには、次のようにしますlong id = ((TagToggleButton) buttonView).getTagId();

于 2015-04-07T18:24:54.953 に答える