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的数据中选择的数据,以便数字显示在我使用的 MainScreen 上?

4

1 回答 1

1

这个问题的 v1 中没有足够的代码给出明确的答案。
执行此代码示例的屏幕将保留在显示堆栈上。当弹出窗口被关闭时,推送弹出窗口的屏幕将获得一个onExposed()事件。弹出窗口本身也将获得一个onUiEngineAttached(boolean)带有参数的事件,false以指示弹出屏幕已从显示堆栈中分离出来。

由于 UI 中的相同操作调用了这两个事件,因此将“提交”逻辑置于其中一个或另一个中的决定取决于哪个应该拥有提交过程。我想正确的选择是推动 PopupScreen 的屏幕,但我可以想象 PopupScreen 执行“提交”过程更有意义的情况。

另请注意,onExposed()仅此特定 PopupScreen 被解除的其他原因可能会被调用,因此请确保您的代码期望这样做。

于 2012-09-12T22:15:44.967 回答