2011-12-20 70 views
-1

我的黑莓OS4.5開發屏幕和我有一個問題關於「刷新畫面時改變爲關注焦點」如何刷新時改變焦點黑莓

private void drawImageScrollView(Vector vImages) { 
    // Horizontal Field 
    HorizontalFieldManager imgScrollView = new HorizontalFieldManager(
      USE_ALL_WIDTH | HORIZONTAL_SCROLL); 
    SimpleItemData itemData = new SimpleItemData(); 
    // Get list bitmap 
    for (int i = 0; i < vImages.size(); i++) { 
     itemData = (SimpleItemData) vImages.elementAt(i); 
     BitmapField bmf = new BitmapField(itemData.getImage(), BitmapField.ACTION_INVOKE | BitmapField.FOCUSABLE) { 
      protected void drawFocus(Graphics graphics, boolean on) { 
       graphics.setColor(Color.BLUE); 
       graphics.drawRect(0, 0, getWidth() - 4, getHeight() - 4); 
       graphics.drawRect(1, 1, getWidth() - 6, getHeight() - 6); 

      } 
      // When focus on image display new information 
      protected void onFocus(int direction) { 
       // Change focus and add processing here 
       super.onFocus(direction); 
      } 

     }; 
     bmf.setPadding(2, 2, 2, 2); 
     bmf.setMargin(2, 2, 2, 2); 
     imgScrollView.add(bmf); 
    } 
    add(imgScrollView); 
} 

如上源代碼,你可以看到「 onFocus「方法。我想在這裏獲取新數據並刷新屏幕,但我不知道哪種方法可以刷新當前屏幕?我嘗試了一些方法,如:doPaint(),invalidate(),...但不工作@@ 我沒有這個問題的解決方案。請幫助我,如果你可以...

非常感謝你!

+0

我試圖popScreen和pushScreen但我的應用程序崩潰是改變圖像@@ ... 幫我。我想要解決這個問題。 – Tama 2011-12-20 06:40:29

回答

0

爲此最好使用FocusChangeListner觀察下面的示例它會幫助你如何刷新字段並重新加載指定的字段(在我來說,我花了一個標籤)

例如當過我專注於圖像成我的Imagescroll在下面它應該顯示它的編號。

注:Befor測試這個例子從這裏http://developer.android.com/resources/tutorials/views/hello-gridview.html普萊舍下載圖片很容易測試,你必須根據你的項目

public class StartUp extends UiApplication 
{ 

    public static void main(String[] args) { 
     StartUp start=new StartUp(); 
     start.enterEventDispatcher(); 
    } 
    public StartUp() 
    { 
     UiApplication.getUiApplication().pushScreen(new RefreshSCreen()); 

    } 
} 

    class RefreshSCreen extends MainScreen implements FocusChangeListener 
    { 
     HorizontalFieldManager imgScrollView; 
     VerticalFieldManager vmanager; 
     LabelField lable; 
     BitmapField bmf[]; 
     private Vector vImages=null; 
     public RefreshSCreen() { 
      vImages=new Vector(); 
      for(int i=0;i<8;i++){ 
       Bitmap image=Bitmap.getBitmapResource("sample_"+i+".jpg"); 
       vImages.addElement(image); 
      } 
      imgScrollView = new HorizontalFieldManager(
         USE_ALL_WIDTH | HORIZONTAL_SCROLL); 

       // Get list bitmap 
      bmf=new BitmapField[vImages.size()]; 
       for (int i = 0; i < vImages.size(); i++) { 

        bmf[i] = new BitmapField((Bitmap) vImages.elementAt(i), BitmapField.ACTION_INVOKE | BitmapField.FOCUSABLE) { 
         protected void drawFocus(Graphics graphics, boolean on) { 
          graphics.setColor(Color.BLUE); 
          graphics.drawRect(0, 0, getWidth() - 4, getHeight() - 4); 
          graphics.drawRect(1, 1, getWidth() - 6, getHeight() - 6); 

         } 
        }; 
        bmf[i].setFocusListener(this); 
        bmf[i].setPadding(2, 2, 2, 2); 
        bmf[i].setMargin(2, 2, 2, 2); 
        imgScrollView.add(bmf[i]); 
       } 
       add(imgScrollView); 
       vmanager=new VerticalFieldManager(); 
       add(vmanager); 


     } 

     public void focusChanged(Field field, int eventType) { 

      for(int i=0;i<vImages.size();i++){ 
       if(field==bmf[i]){ 
        if(bmf[i].isFocus()){ 
         synchronized (UiApplication.getEventLock()) { 
          vmanager.deleteAll(); 
          vmanager.invalidate(); 
          lable=new LabelField("Hi I am reference of Image number "+i); 
          vmanager.add(lable); 
         } 
        } 
       } 
      } 
     } 
    } 
+0

非常感謝! – Tama 2011-12-21 02:20:43