2011-01-19 12 views
0

Blackberryアプリケーションにメインメニューがあります。メニュー項目を入力してメインメニューに戻る必要があるときに、別の画面にアクセスする必要があります。どうしたらいいですか?プッシュされたBlackBerry画面から親画面に戻る

package com.stockmarket1; 


import net.rim.device.api.system.Bitmap; 
    import net.rim.device.api.ui.*; 
    import net.rim.device.api.ui.container.*; 
    import net.rim.device.api.ui.component.*; 
    import net.rim.device.api.ui.decor.*; 
    import net.rim.blackberry.api.push.PushApplication; 

    public class StockMarket extends UiApplication implements FieldChangeListener { 
     public Screen _clientList; 
     public Screen _comments; 
     public Runnable _popRunnable; 

    public static void main(String[] args) 
    { 
     StockMarket theApp = new StockMarket(); 
     theApp.enterEventDispatcher(); 
    } 

    public StockMarket() { 
     //Code for MainScreen 
     final MainScreen baseScreen = new MainScreen(); 

     baseScreen.setTitle("Colombo Stock Exchange"); 
     ButtonField clientList = new ButtonField("View Client List", ButtonField.CONSUME_CLICK); 
     clientList.setChangeListener(new FieldChangeListener() { 

      public void fieldChanged(Field field, int context) { 
       pushScreen(_clientList); 
       } 
     }); 

     ButtonField comments= new ButtonField("View Comments", ButtonField.CONSUME_CLICK); 
     comments.setChangeListener(new FieldChangeListener() { 

      public void fieldChanged(Field field, int context) { 
       pushScreen(_comments); 
       } 
     });  
     Bitmap bitmap = Bitmap.getBitmapResource("logo1.png"); 
     BitmapField logo = new BitmapField(bitmap, BitmapField.FIELD_HCENTER); 
     LabelField newLine = new LabelField("\n"); 

     baseScreen.add(logo); 
     baseScreen.add(newLine); 
     baseScreen.add(clientList); 
     baseScreen.add(comments); 


     //Code for _comments 
     _comments = new FullScreen(); 
     _comments.setBackground(BackgroundFactory.createSolidBackground(Color.LIGHTCYAN)); 
     LabelField title = new LabelField("Comments",LabelField.FIELD_HCENTER); 


     LabelField comment = new LabelField("Type"); 
     RichTextField rtfComment = new RichTextField(); 

     _comments.add(title); 
     _comments.add(comment); 
     _comments.add(rtfComment); 

     //Code for _clientList 
     _clientList = new FullScreen(); 
     _clientList.setBackground(BackgroundFactory.createSolidBackground(Color.LIGHTBLUE)); 
     LabelField clientTitle = new LabelField("Listed Companies\n\n", LabelField.FIELD_HCENTER); 
     LabelField line = new LabelField("__", LabelField.USE_ALL_HEIGHT); 

     ButtonField closeClient = new ButtonField("Close", ButtonField.CONSUME_CLICK); 


     closeClient.setChangeListener(new FieldChangeListener() { 

      public void fieldChanged(Field field, int context) { 
       pushScreen(baseScreen); 
      } 
     }); 

     _clientList.add(clientTitle); 
     _clientList.add(line); 

     //Events 
     pushScreen(baseScreen); 
    } 

    public void fieldChanged(Field field, int context) { 
     // TODO Auto-generated method stub 

    } 
} 

答えて

1

あなたの「閉じる」ボタンのコードが問題ですが、私はあなたがヒットしたときにはRuntimeExceptionを取得したと思う:ここ

は、私はボタンを戻る押すと試みたが、実行時例外をキャッチアップするものですデバイスの「戻る」ボタンですが、これは別の原因があると思います。

メニュー画面を画面スタックにプッシュするのではなく、現在の画面をポップするだけです。以前に表示されたメニュー画面に戻ります。

closeClient.setChangeListener(new FieldChangeListener() { 
     public void fieldChanged(Field field, int context) { 
      // previous code: 
      // pushScreen(baseScreen); 
      // correct code: 
      popScreen(_clientList); 
     } 
    }); 
関連する問題