2011-06-29 78 views
0

I have posted this question previously但答案並不適用。提供的解決方案只是在自定義按鈕具有焦點和不重點時更改圖片。假設在我的應用程序中,如果用戶點擊了customButton,我需要更改圖片,我通過調用相同的屏幕(例如UiApplication.getUiApplication()。pushScreen(new Screen2(b));)來完成此操作。 Screen2是保存customButton的屏幕。在點擊evevt我米通過傳遞變量pic_status推動相同的屏幕,決定哪個圖片在新屏幕CustomButton中繪製。有沒有什麼辦法可以在點擊事件中更新CustomButtonField中的圖片,而不必一再推動同一個屏幕。如何在點擊事件中更改CustomButtonField的圖片?

//code in Screen2 

public void fieldChanged(Field field, int context) 
{ 
    if(field == bf1) 
    { 

     if(pic_status == 0) 
     { 
      pic_status=1; 


     } 
     UiApplication.getUiApplication().pushScreen(new Screen2(pic_status));  


    } 



//code in CustomButtonField 

CustomButtonField(String label,int pic_status,long style) 
{  
    super(style); 
    this.label = label; 
    this.labelHeight = getFont().getHeight(); 
    this.labelWidth = getFont().getAdvance(label); 
    this.notice = s; 
    if(pic_status ==0) 
    { 
    currentPicture1 = onPicture; 
    currentPicture2 = onPicture; 
    } 
    if(pic_status ==1) 
    { 
    currentPicture1 = clickPicture; 
    currentPicture2 = onPicture; 
    } 
    if(pic_status==2) 
    { 
     currentPicture1 = onPicture; 
     currentPicture2 = clickPicture; 
    } 
} 

我需要一種方法來更新customButtonField文字和圖片的ButtonClick事件不是聚焦/無焦點的事件,而不連連推同一屏幕。如果我對上述問題的描述不盡如人意,請在下面添加註釋n我可以給出更詳細的解釋我的問題?

+0

所以這是一個http://stackoverflow.com/questions/6517411/about-custombuttonfield-in-blackberry –

回答

0

我們可以覆蓋CustomButtonField的一些方法,如保護布爾keyChar(...),受保護的布爾navigationClick(...),受保護的布爾trackwheelClick(...),受保護的布爾touchEvent(...)等,並在發生點擊或選擇事件時使用它們更改按鈕圖像。

例如在保護布爾的TouchEvent(......),我們可以按照任務做..

  1. 替換所需的那些圖像時,我們得到TouchEvent.ClICK
  2. 調用invalidate()。
  3. TouchEvent.UNCLICK恢復原始圖像。
  4. 調用invalidate()。