用户界面 - 在黑莓中切换屏幕



我有一个黑莓应用程序,它有一个侦听器,用于在CheckIn屏幕中实现发送按钮。数据通过 Web 服务发送。如果数据发送成功,则会收到"确定"的确认消息。我正在尝试根据收到的响应在我的黑莓应用程序中切换屏幕。

FieldChangeListener sendBtnListener = new FieldChangeListener() {   
        public void fieldChanged(Field field, int context) 
        {   
            try {
                String alertMsg=sendTextCheckIn();
                if(alertMsg.equals("OK"))
                {
                    UiApplication.getUiApplication().invokeLater( new Runnable()
                    {
                        public void run ()
                        {
                            UiApplication.getUiApplication().pushScreen(new MyScreen());
                        }
                    } );
                }
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }   
     };

但是,以上是抛出App Error 104: IllegalStateException.任何人都可以指导如何在黑莓应用程序之间切换屏幕。

编辑:我可以切换到任何其他屏幕,但我不能切换到MyScreenNOTE: MyScreen是应用程序的主(第一个)屏幕。上面的方法sendTextCheckIn()调用放置在MyScreen内的另一个方法。这与错误有关吗?请指教。

'fieldChanged' 事件已经在 UI 事件线程上运行,所以你不需要在其中执行 invokeLater 调用,只需直接调用 pushScreen 即可。

您提到您的 IllegalStateException 问题只发生在 MyScreen 上。 这使得它听起来像是MyScreen实现的特定内容。开始缩小问题范围 - 查看 MyScreen 构造函数中发生的情况,以及在屏幕可见之前可能调用的任何事件。 其中一些代码是导致问题的原因。

包装所有

可能在 try/catch 中引发异常的内容。

不要做e.printStackTrace() - 那不会给你太多。

相反,做一些类似System.err.println ("KABOOM in method abc() - " + e);的事情 - 似乎需要更多的努力,但相信我,在调试这样的问题时,这变得非常宝贵。

抓住Exception,除非你有很好的理由来捕捉特定的子类型 - 否则你最终会得到意想不到的,未捕获的异常,你将寻找几天。

相关内容

  • 没有找到相关文章

最新更新