如何在黑莓手机中从全局屏幕推出新屏幕?

时间:2012-07-17 05:39:38

标签: blackberry

这里我在blackberry的globalscreen中显示推送通知,我需要通过单击对话框的OK按钮来推送屏幕。我想通过单击“确定”按钮启动应用程序。

请帮帮我。 提前谢谢!

1 个答案:

答案 0 :(得分:3)

我不是100%确定我理解你想要什么,但如果这不起作用,只需添加一个评论,我会尽力给你一个更好的答案。

首先,read this on pushing global screens

this on performing actions after receiving global alerts

如果我理解正确,你的代码应该类似于第二个链接的例子。

然后,如果您实施DialogClosedListener,就像在第二个链接中一样,您可能会有类似这样的内容:

收到通知后,

从后台调用

Dialog myDialog = new Dialog(Dialog.D_OK_CANCEL, "Hello", Dialog.OK, null, 0);
myDialog.setDialogClosedListener(new MyListener());
UiApplication.getUiApplication().pushGlobalScreen(myDialog, 1, true);

实施对话框侦听器:

private class MyListener implements DialogClosedListener {

    public void dialogClosed(Dialog dialog, int choice) {
       switch (choice) {
          case Dialog.OK: 
              // ok clicked
              UiApplication.getUiApplication().requestForeground();
              break;
          case Dialog.CANCEL:
              // cancel clicked. or escape pressed
              break;
          default:
              break;
       }
   }
}

然后,在您的UiApplication课程中,您可以回复激活,如果用户从Dialog中选择确定,就会发生这种情况:

public class MyApp extends UiApplication {
    private boolean _nextScreenShowing = false;
    public void activate() {
        super.activate();
        if (!_nextScreenShowing) {
            pushScreen(new NextScreen());
            _nextScreenShowing = true;
        }
    }
}

我显示_nextScreenShowing变量,只是为了确保您考虑推送下一个屏幕是否合适。它可能不会每个时间activate被调用。您可能需要通过回复Application.deactivate()方法或Screen.onExposed()Screen.onObscured()来跟踪该布尔标记。所有这些都取决于您的应用的工作方式。