2011-06-22 39 views
0

我想要做的是點擊screen1中的按鈕,我嘗試用不同的圖像和不同的過渡上下文反覆推送screen2。如何爲黑莓創建圖片幻燈片?

的代碼如下

public void fieldChanged(Field field, int context) 
{ 
     if(field==slideButton) 
     {  
      for(int i=0;i<bitmaps.length;i++) 
      { 



       slideScreen = new SliderScreen(bitmaps[i]); 

       UiApplication.getUiApplication().pushScreen(slideScreen); 
       try { 
        Thread.sleep(2000); 
       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       UiApplication.getUiApplication().popScreen(slideScreen); 

      } 

     } 
    } 
} 

問題是,什麼appears.Is有任何其他方式來實現這一..

回答

0

固定的版本你最初的想法:

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

     final UiApplication app = UiApplication.getUiApplication(); 

     new Thread(new Runnable() { 
      public void run() { 
       for (int i = 0; i < bitmaps.length; i++) { 
        final SliderScreen slideScreen = 
         new SliderScreen(bitmaps[i]); 

        app.invokeAndWait(new Runnable() { 
         public void run() { 
          app.pushScreen(slideScreen); 
         } 
        }); 

        try { 
         Thread.sleep(2000); 
        } catch (InterruptedException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 

        app.invokeAndWait(new Runnable() { 
         public void run() { 
          app.popScreen(slideScreen); 
         } 
        }); 
       } 
      } 
     }).start(); 
    } 
} 

您的代碼無法工作,因爲UI線程在push和pop之間處於睡眠狀態,所以它沒有時間/機會開始繪製屏幕。注意我將整個操作移到了一個單獨的線程中。所以現在主UI線程有空餘的時間來實際繪製。

+0

@Manish:這個成功嗎? –