2015-04-07 35 views
0

我試圖擴展名爲TagToggleButton的新類中的ToggleButton類,它的唯一區別是它具有可以與其關聯的ID。該TagToggleButton類看起來如下:需要通過OnCheckChangedListener訪問擴展的ToggleButton類的屬性

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

但是,我不能叫上buttonViewgetTagId,因爲它被定義爲CompoundButton。我怎樣才能改變buttonViewTagToggleButton類型(即我怎麼重寫我的TagToggleButton方法中的OnCheckedChangeListener類?

非常感謝!

+0

你有沒有嘗試將'CompoundTutgle'' buttonView'投射到'onCheckedChanged'方法內的'TagToggleButton'? –

+0

@rere252否我沒有,沒有意識到這是有效的。我可以直接在onCh上做到這一點我描述的eckedChanged方法? (因爲我不需要進一步編輯TagToggleButton類) – cshadowstar

+0

我試過以下內容:'long id =(TagToggleButton)buttonView.getTagId();'它仍然是Android studio中未解決的方法 – cshadowstar

回答

0

裏面的onCheckedChanged法鑄造的CompoundButtonbuttonViewTagToggleButton。要獲得標籤ID你可以做一些類似於long id = ((TagToggleButton) buttonView).getTagId();