2015-04-07 2 views
0

Я пытаюсь расширить класс ToggleButton в новом классе с именем TagToggleButton, единственным отличием которого является тот факт, что он имеет идентификатор, который я могу установить связанным с ним. TagToggleButton класс выглядит следующим образом:Нужно получить доступ к свойствам расширенного класса ToggleButton через OnCheckChangedListener

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, который позволит мне получить идентификатор свойства кнопки. Например:

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 на buttonView, как это определяется как CompoundButton. Как я могу изменить buttonView к типу TagToggleButton (то есть, как я могу переопределить OnCheckedChangeListener класс в моем TagToggleButton методе?

Большое спасибо!

+0

вы пробовали литья '' CompoundButton' buttonView' в 'TagToggleButton' внутри' onCheckedChanged' метода? –

+0

@ rere252 нет, я не так, не понял, что действительно было. Я могу сделать это прямо внутри onCh eckedChanged метод, который я описал? (так как мне больше не нужно редактировать класс TagToggleButton?) – cshadowstar

+0

Я пробовал следующее: 'long id = (TagToggleButton) buttonView.getTagId();' и он по-прежнему появляется как неразрешенный метод в студии Android – cshadowstar

ответ

0

Внутри метод onCheckedChanged бросить CompoundButtonbuttonView к TagToggleButton. Для того, чтобы получить тег идентификатор вы могли бы сделать что-то вроде long id = ((TagToggleButton) buttonView).getTagId();

Смежные вопросы