0

私のクエリは、 Screen Object を使用してスタックされた画面のフィールドにアクセスする方法ですか?

正確な問題は次のとおりです。

ユーザーがそのフィールドをクリックすると、1 つのテキスト フィールド (ClientName) を持つ 1 つの画面があり、アプリケーションは新しい画面をプッシュし、ユーザーが MyWebServices を使用してリモート データベースを検索できるようにします。ユーザーが検索結果から1つのクライアントを選択すると、前の画面のテキストフィールドに、ユーザーが現在の画面で選択したテキストを設定したい..

私は pushScreen( new screen("text) ) を試しましたが、この操作を 1 回だけ実行したい場合の結果になる可能性がありますが、他の画面に移動するフィールドが 2 つあるため、これはオプションではありません。 webservices からデータをフェッチし、新しい画面をプッシュするたびに、プッシュスクリーン操作のたびに、目的のテキストが設定されたフィールドを 1 つだけ取得します

4

3 に答える 3

1

これは、ブラックベリー(または特定のプログラミング言語)に関連する質問ではありません。これは、アプリケーションアーキテクチャと常識の問題です。ある画面が別の画面のを変更する必要がある場合はField、それを変更する画面への参照を渡すだけFieldです。

于 2011-04-26T13:06:51.303 に答える
0

私は私の質問に対する答えを見つけました。解決策は私の質問にありましたが、最初はそれを見つけることができませんでした。私が使いたいと書いたとき、解決策は非常に簡単でした

UiApplication.getUiApplication().getActiveScreen() 

それはほぼ正しい方法であり、正しい方向に進んでいましたが、私が見逃していたのは、「画面(スタックトップから取得したばかり)をそのタイプにキャストしていないことだけでした」 screen をそのタイプにキャストする必要がありました。このように

UiApplication.getUiApplication().posScreen(this)
(MyScreen1) UiApplication.getUiApplication().getActiveScreen() 

取得した画面 (MyScreen1) のすべてのフィールドにアクセスできるようになりました。

心に留めておくべきこと

  1. 画面をそのタイプにのみキャストすることを確認してください。そうしないと、bbがリソースが見つからないというエラーを返します

スタックでスクリーンを使用する利点

  1. スタックから既に作成された画面を使用でき、新しい画面を作成する必要はありません
  2. 新しい画面を作成する場合、それはメモリにスタックされ、役に立たなくてもメモリをますます消費します(スタックに残すのではなく、役に立たない場合は画面をポップする習慣をつけてください))
  3. 他の画面からすぐにすべてのフィールドを設定できるため、静的変数を作成する必要はありません
于 2011-04-28T05:43:17.500 に答える
0

こんにちは、私はかつて同じ問題を抱えていました。

スクリーン1

                  ------------------
  Client Name     |  text field     |
                  ------------------

ユーザーがこのテキストフィールドまたは任意のボタンをクリックすると、ユーザーが特定の値を選択したときに画面 2 で Screen2 を押すと、これが実行されます。

1) メイン クラスで clientName などの静的変数を取得します。2) この変数の値を設定します。3) アクティブな画面をポップ

UiApplication.getUiApplication().getActiveScreen();

このコードが呼び出されると、Screen1 に戻ります。今、screen1 でメソッドが呼び出されます。

    public void  onExposed()
    {
      //here u can set the text in textfield using the static variable 
      invalidate(); // for repainting
    }
于 2011-04-27T11:36:59.763 に答える