"Nothing to display"诺基亚 S40 上



我使用LWUIT编写了一个j2me应用程序。它在模拟器和symbian设备上都能很好地工作。但当我试图在诺基亚s40设备上运行它时,它显示了一条"无内容显示"的消息。我试着按照一些论坛的规定显示启动画面。尽管如此,这款应用程序始终无法通过启动屏幕。

编辑1

        Display.init(this);
        Resources r = Resources.open("/theme.res");
        UIManager.getInstance().setThemeProps(r.getTheme(r.getThemeResourceNames()[0]));
        Dialog splash = new Dialog("Splash Screen");
        splash.setAutoDispose(true);
        splash.setTimeout(5000);
        splash.show();
        RecordStore rs = null;
        byte[] buffer = null;
        rs = RecordStore.openRecordStore("xxxxxx", true);
        if (rs.getNumRecords() > 0) {
            buffer = rs.getRecord(rs.getNumRecords());
            num = new String(buffer, 0, buffer.length);
            rs.closeRecordStore();
    offer(num);   // a method which displays main form
        } else {
            rs.closeRecordStore();
            registration("xxxxx"); //another method which displays the secondary form
        }

在这个代码片段中,在对话框/闪屏之后,设备上显示一个空白屏幕。当我删除管理RecordStore的代码时,将显示表单。如何解决这个问题?

编辑2 注册代码()

        Form f = new Form();
        f.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
        Image img = Image.createImage("logo.png");
        f.addComponent(new Label(img));
        Label lbl = new Label(msg);
        f.addComponent(lbl);
        f.addComponent(new Label("xxxxx"));
        final TextArea number = new TextArea(1, 10, TextArea.NUMERIC);
        f.addComponent(number);
        Button btn = new Button("Register");
        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                //perform rms related activities and move onto offer()
            }
        });
        f.addComponent(btn);
        Button help = new Button("Help?");
        help.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                //display a help dialog
            }
        });
        f.addComponent(help);
        f.addCommandListener(this);
        f.show();

splash.show()更改为splash.showModeless()

不管你的代码是不正确的,因为它假设show()将立即显示对话框,这不是大多数GUI框架的工作方式。您的方法需要完成并将控制权返回给LWUIT,以便显示对话框。但是,您阅读了RMS,然后显示表单的代码不清楚,您希望它何时实际发生。

你需要在没有超时的情况下显示对话框(我将使用一个窗体的闪屏,没有理由使用一个对话框),然后打开一个线程(新线程(…))做任何你想做的,然后当线程完成显示你的窗体

从这个博客,Nothing to display问题是标准的诺基亚S40延迟呼叫setCurrent()的行为,正常的建议是在早期显示启动屏幕以避免此提示。

也看看这个相同的相关讨论。

编辑:

Form splashscreen = new Form();
splashscreen.getStyle().setBgImage(imageName);
splashscreen.show()
Display.getInstance().callSerially(new Runnable() {
    public void run() {
      try {
           Thread.sleep(5000L);
           // do RMS related things here.
     } catch (InterruptedException ex) {
           ex.printStackTrace();
           }
      }
    });

相关内容

  • 没有找到相关文章

最新更新