2

Blackberry のペイン マネージャーで 3 つのタブを作成した以下のコードに取り組んでいます。最初のタブでは、ユーザーは顧客名に対して日付範囲を選択し、その顧客の結果を取得して、グリッドの 3 番目のタブに表示することができます。フォーマット。

  1. したがって、最初のタブには 2 つの日付フィールドと顧客テキスト フィールドがあり、検索ボタンも付いています。

  2. 検索ボタンをクリックすると、検索のレコードが選択され、グリッド形式で表示するために 3 番目のタブにジャンプします。

  3. 3 番目のタブには、テーブル レコード要素を文字列ごとにグリッドに挿入するための try catch ステートメントがあります。

問題は、アプリケーションを開いて 3 番目のタブをクリックするとすぐに、ジャンク値で満たされたグリッドが表示されることです。最初のタブの検索ボタンがクリックされて結果が表示されるのを待ちません。たまたまアプリケーションを閉じて再度開くと、以前の検索結果を示す 3 番目のタブが見つかりました。

コードは次のとおりです。

   // setup the tab model with 3 tabs
  final PaneManagerModel model = new PaneManagerModel();
  model.enableLooping( true );

  // setup the first tab   XXXXXXXXXXXXXXXXXXXX~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   VerticalFieldManager vfm = new VerticalFieldManager( 
      Field.USE_ALL_HEIGHT | Field.USE_ALL_WIDTH |
      Manager.NO_VERTICAL_SCROLL | Manager.NO_HORIZONTAL_SCROLL );
  LabelField lbl = new LabelField( "Content for tab 1", Field.FOCUSABLE );
  vfm.add( lbl );

  TextField1 = new TextField(" Name:            ",null)
     {
            protected boolean keyChar(char ch, int status, int time) 
            {
            if (CharacterUtilities.isLetter(ch) || (ch == Characters.BACKSPACE || (ch == Characters.SPACE))) 
            {
            return super.keyChar(ch, status, time);
            }
           return true;
            }
        };
     vfm.add(TextField1);

    SimpleDateFormat sdfDate = new SimpleDateFormat("dd/MM/yyyy");//dd/MM/yyyy
     Date now = new Date();
     String strDate = sdfDate.format(now);

     TextField2 = new TextField("\n From:             ",strDate);
     vfm.add(TextField2);

    // TextField3 = new TextField("TO: ",null);
     //vfm.add(TextField3); 

     SimpleDateFormat sdfDate1 = new SimpleDateFormat("dd/MM/yyyy");//dd/MM/yyyy
     Date later = new Date();
     String strDate1 = sdfDate1.format(later);

     TextField3 = new TextField("\n To:                 ",strDate1);
     vfm.add(TextField3);

     ButtonField showInputButton = new ButtonField("  Search  ",ButtonField.FIELD_HCENTER | ButtonField.CONSUME_CLICK);
      showInputButton.setChangeListener(new FieldChangeListener() 
      {
            public void fieldChanged(Field field,int context) 
            {
                    Dialog.alert(TextField1.getText());
                    try
                  {    
                    //Open or create the database
                    Database db = DatabaseFactory.openOrCreate("database1.db");
                    //Insert onto table
                    Statement statement13 = db.createStatement("INSERT into 
                    Temp4(date,bill,narration) VALUES (('"+TextField3.getText()+"'),(SELECT balance FROM Temp3),('Opening Balance'))");
                    statement13.prepare();
                    statement13.execute(); 

                    Statement statement131 = db.createStatement("INSERT INTO Temp4(date,bill,narration,id) select date,amount,narration,id from Bills where name=\'"+TextField1.getText()+"\' AND substr(date,7)||substr(date,4,2)||substr(date,1,2) < substr (\'"+TextField3.getText()+"\',7)||substr (\'"+TextField3.getText()+"\',4,2)||substr (\'"+TextField3.getText()+"\',1,2) ");
                    statement131.prepare();
                    statement131.execute();      // date INTEGER,bill INTEGER,rec INTEGER,narration TEXT,id INTEGER
                    statement131.close(); 

                    Statement statement132 = db.createStatement("INSERT INTO  Temp4(date,rec,narration,id) select date,amount,narration,id from Receipts where name=\'"+TextField1.getText()+"\' AND substr(date,7)||substr(date,4,2)||substr(date,1,2) < substr (\'"+TextField3.getText()+"\',7)||substr (\'"+TextField3.getText()+"\',4,2)||substr (\'"+TextField3.getText()+"\',1,2) ");
                    statement132.prepare();
                    statement132.execute();       
                    statement132.close(); 

                     db.close();
                    }
                    catch( Exception e ) 
                    {         
                        System.out.println( e.getMessage() );
                        e.printStackTrace();
                    }
                    model.getView().jumpTo(2,PaneManagerView.DIRECTION_NONE);
                  }
        }

                    );

      vfm.add(showInputButton);
      LabelField myLbl = new MyLabelField( "Ledger" );
 NullField nullFld = new NullField( Field.FOCUSABLE );
  HorizontalFieldManager hfm = new HorizontalFieldManager();
  hfm.add( nullFld );
  hfm.add( myLbl );

  Pane pane = new Pane( hfm, vfm );
  model.addPane( pane );

   //Here ends tab 1 code

// 3 番目のタブをセットアップします- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~

      vfm = new VerticalFieldManager( 
      Field.USE_ALL_HEIGHT | Field.USE_ALL_WIDTH |
      Manager.NO_VERTICAL_SCROLL | Manager.NO_HORIZONTAL_SCROLL );

      myLbl = new MyLabelField( "Daily Report" );

      //Adding grid format for fetching from temp4 table----------------


 final GridFieldManager grid = new GridFieldManager(10,5,0); 

    grid.add(new LabelField("Date")
    {
       public void paint(Graphics graphics)
       {
         graphics.setColor(Color.CYAN);
         super.paint(graphics);
       }
     });
    grid.add(new LabelField("Bill")
    {
       public void paint(Graphics graphics)
       {
         graphics.setColor(Color.CYAN);
         super.paint(graphics);
       }
     });
    grid.add(new LabelField("Receipt")
    {
       public void paint(Graphics graphics)
       {
         graphics.setColor(Color.CYAN);
         super.paint(graphics);
       }
     });
    grid.add(new LabelField("Narration")
    {
       public void paint(Graphics graphics)
       {
         graphics.setColor(Color.CYAN);
         super.paint(graphics);
       }
     });
    grid.add(new LabelField("ID")
    {
       public void paint(Graphics graphics)
       {
         graphics.setColor(Color.CYAN);
         super.paint(graphics);
       }
     });

    grid.setColumnPadding(20);
    grid.setRowPadding(20);
//try catch was here


       try
               {

                  //Open or create the database
                    Database db = DatabaseFactory.openOrCreate("database1.db"); 

                    Statement statement55 = db.createStatement("CREATE TABLE IF NOT EXISTS Temp4(date INTEGER,bill INTEGER,rec INTEGER,narration TEXT,id INTEGER)");
                    statement55.prepare();
                    statement55.execute();       
                    statement55.close();

                    Statement statement56 = db.createStatement("SELECT date,bill,rec,narration,id FROM Temp4 ORDER BY ROWID DESC");
                    statement56.prepare();
                    statement56.execute();

                            Cursor c = statement56.getCursor();

                            //Get to the row of grid
                             for (int i = 1; i < grid.getRowCount(); i++)
                             {
                                    System.out.println("Inside for first loops");
                                    //Get to the column of grid
                                for (int j = 0; j < grid.getColumnCount() ; j++)
                                {
                                   System.out.println("Inside for second loops");
                                   //Get to the row of temp4 table
                                   while(c.next()) 
                                   {

                                      System.out.println("Inside while"); 
                                        Row r;
                                        r = c.getRow();
                                        //Get to the column of temp4 table

                                        for (int k = 4; k >=0; k--)
                                        {

                                            System.out.println("Inside for loops");
                                            //Check for whether column retrieved is date or naraation
                                            if(k==0 || k==3)
                                            {
                                                System.out.println("Retrieving date or narration");
                                                grid.insert(new LabelField(r.getString(k))
                                                {
                                                    public void paint(Graphics graphics)
                                                    {
                                                    graphics.setColor(Color.GOLD);
                                                    super.paint(graphics);
                                                    }
                                                 },i,j);


                                            }  
                                            else
                                            {   
                                                //Check for whether column retrieved is bills,rec or id
                                                System.out.println("Retrieving other values"); 
                                                String p = "" + r.getObject(k);

                                                //if(r.getString(k) != null)
                                                //{ 
                                                grid.insert(new LabelField(p)
                                                {
                                                    public void paint(Graphics graphics)
                                                    {
                                                    graphics.setColor(Color.GOLD);
                                                    super.paint(graphics);
                                                    }
                                                 },i,j); 
                                               //  } 


                                            }   
                                           grid.setBackground(BackgroundFactory.createLinearGradientBackground(Color.MIDNIGHTBLUE,Color.STEELBLUE,Color.MIDNIGHTBLUE,Color.STEELBLUE));
                                           //grid.setBackground(BackgroundFactory.createLinearGradientBackground(Color.GOLD,Color.CHOCOLATE,Color.GOLDENROD,Color.CORAL));

                                        } 
                                         System.out.println("Exiting while");                        
                                      }

                                      System.out.println("Exiting sec for");
                                      break;
                                  }
                                System.out.println("Exiting first for");
                                break;
                               } 
                               statement56.close(); 
                               db.close();
                  }

                  catch( Exception e ) 
                  {         
                        System.out.println( e.getMessage() );
                        e.printStackTrace();
                  }  





    vfm.add(grid);

   //----------------grid ends---------------------------------------- 

  nullFld = new NullField( Field.FOCUSABLE );
  hfm = new HorizontalFieldManager();
  hfm.add( nullFld );
  hfm.add( myLbl );

   pane = new Pane( hfm, vfm );
   model.addPane( pane );

そして今、残りのセットアップ

      // select the tab to be displayed
  model.setCurrentlySelectedIndex( 0 );    

  // setup the rest of the components
  HorizontalTabTitleView titleView = new HorizontalTabTitleView( Field.FOCUSABLE );
  titleView.setNumberOfDisplayedTabs( 3 );
  titleView.setModel( model );

  PaneView paneView = new PaneView( Field.FOCUSABLE );
  paneView.setModel( model );

  PaneManagerView view = new PaneManagerView( 
          Field.FOCUSABLE  | Manager.NO_VERTICAL_SCROLL | 
          Manager.NO_HORIZONTAL_SCROLL | Manager.USE_ALL_HEIGHT | 
          Manager.USE_ALL_WIDTH, 
          titleView, paneView );
  view.setModel( model );
  model.setView( view );

  // configure the Controller
  HorizontalTabController controller = new HorizontalTabController();
  controller.setModel( model );
  controller.setView( view );
  model.setController( controller );
  view.setController( controller );


  // add the tab manager to the MainScreen
  this.add( view );

 }

また、3 番目のペインを無効にして、最初のタブ検索の実装内に追加しようとしましたが、3 番目のタブが最初の後に定義されているため、エラーが発生します。また、最初のタブのボタンクリックで呼び出すことができるように、関数に3番目のタブのtry catchを含めようとしましたが、「式の不正な開始」というエラーも発生します

解決策を提案してください。このコードを考えて解決策を支援できる人は誰でも大歓迎です。ありがとう。

4

1 に答える 1

0

と の BlackBerry MainScreenメソッドを見たことがonExposedありonObscuredますか?

保護された無効 onExposed()

ディスプレイ スタックからポップされた画面によってこの画面が表示されたときに呼び出されます。screen のサブクラスは、特別な処理のためにこのメソッドをオーバーライドする必要があります。

補完的なコールバックはonObscured()です。


保護された無効 onObscured()

この画面がディスプレイ スタックにプッシュされた新しい画面によって隠されると呼び出されます。screen のサブクラスは、特別な処理のためにこのメソッドをオーバーライドする必要があります。

補完的なコールバックはonExposed()です。

于 2013-01-10T15:13:43.307 に答える