我运行LWUITDemo,某些UI无法显示成功。所有这些都是Form包含的文本区域,如果我将TextArea更改为Label,它工作得很好。
抱歉,我在诺基亚 s40 sdk 2.0 中运行它。当我运行大多数包含文本区域的代码时,发生了异常;
这样的代码(来自LWUITDemo):
Form aboutForm = new Form("About");
aboutForm.setScrollable(true);
aboutForm.setLayout(new BorderLayout());
TextArea aboutText = new TextArea(getAboutText(), 5, 10);
aboutText.setEditable(false);
aboutForm.addComponent(BorderLayout.CENTER, aboutText);
aboutForm.show();
当我运行它时,它失败了:
Form: showModal
java.lang.NullPointerException
at com.sun.lwuit.TextArea.shouldShowHint(+21)
at com.sun.lwuit.TextArea.calcPreferredSize(+4)
at com.sun.lwuit.Component.preferredSize(+63)
...
你可以检查下面的代码:
import com.sun.lwuit.Display;
import com.sun.lwuit.Form;
import com.sun.lwuit.TextArea;
import com.sun.lwuit.layouts.BorderLayout;
import javax.microedition.midlet.*;
public class TextMidlet extends MIDlet {
private Form aboutForm;
public TextMidlet() {
Display.init(this);
aboutForm = new Form();
aboutForm.setScrollable(true);
aboutForm.setLayout(new BorderLayout());
}
public void startApp() {
TextArea aboutText = new TextArea("hiiiiiiiiiiiiii", 5, 10);
aboutText.setEditable(false);
aboutForm.addComponent(BorderLayout.CENTER, aboutText);
aboutForm.show();
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
代码对我来说看起来不错。请检查getAboutText()
是否返回字符串并且不返回 null。
如果这没有帮助,您可以使用 LWUIT-源来调试您的代码。在 TextArea.shouldShowHint 上设置一个断点,并找出空值是什么。
检查
import com.sun.lwuit.TextArea;