0

私はまだBBに取り組んでいます。連絡先リストを表示して、そこから連絡先アイテムを選択することができました。これをMainScreenに実装します。以下は私のコードです:

list = (BlackBerryContactList) PIM.getInstance()
                        .openPIMList(PIM.CONTACT_LIST, PIM.READ_ONLY);
                PIMItem contact = list.choose();
                if (contact != null) {
                    Vector numbers = new Vector();
                    for (int i = 0; i < contact.countValues(Contact.TEL); i++) {
                        selectedMobileNumber = contact.getString(
                                Contact.TEL, i);
                        numbers.addElement(selectedMobileNumber);
                    }
                    ListPopupScreen listPopupScreen = new ListPopupScreen(
                            FormScreen.this, numbers);
                    UiApplication.getUiApplication().pushScreen(
                            listPopupScreen);
                    System.out.println("OKEEEEEE " + selectedMobileNumber);
                }

連絡先アイテムに複数の電話番号が含まれている場合があるため、すべての電話番号を一覧表示するには、オーバーライドされたSopupScreenを表示する必要があります。ListPopupScreen問題は、私が使用するメイン画面に番号が表示されるように、いわゆるから選択したデータをどのようにコミットするかです。

4

1 に答える 1

1

この質問のv1には、決定的な答えを出すのに十分なコードがありません。
このコードサンプルを実行している画面は、ディスプレイスタックに残ります。ポップアップが閉じられると、ポップアップを押した画面にonExposed()イベントが表示されます。ポップアップ自体も、ポップアップ画面が表示スタックから切り離されたことを示すonUiEngineAttached(boolean)引数付きのイベントを取得します。false

両方のイベントがUIで同じアクションに対して呼び出されるため、「コミット」ロジックをどちらに配置するかは、どちらがコミットプロセスを所有するかによって異なります。正しい選択はPopupScreenをプッシュしている画面だと思いますが、PopupScreenが「コミット」プロセスを実行する方が理にかなっている場合を想像できます。

また、onExposed()この特定のPopupScreenが却下されるという他の理由で呼び出される可能性があるため、コードがそれを予期していることを確認してください。

于 2012-09-12T22:15:44.967 に答える