我在真实设备(BB Bold 9700)上调试我的Blackberry应用程序时遇到了一个奇怪的问题。当我在BB模拟器中调试相同的应用程序时,应用程序运行正常,但是当我在真实设备上运行它时,应用程序表现不同(自定义绘画完全错误)。更糟糕的是,我的Eclipse环境似乎无法在处于断点(调试时间)时正确查看实时对象。
我添加了一个屏幕截图来说明这种奇怪的行为:
如您所见,应用程序在IF语句中的断点处停止,但“变量”窗格显示变量“methodName”等于null。此外,当我想查看类型为 org.json.me.JSONArray 的变量“methodArguments”时,它说“ 详细信息不可用 - VM不支持 ”。
有谁知道这里发生了什么?我的应用程序在模拟器上运行良好,但它在真实设备上目前无用。
提前致谢!
答案 0 :(得分:0)
我想我修好了它:
问题是我在一个尚未添加到视图堆栈的管理器上布置了字段。
对我来说,诀窍是覆盖了包含显示错误的字段的管理器中的onDisplay():
protected void onDisplay()
{
//Make sure superclass is called
super.onDisplay();
/*You have to call "this.setDirty(true)" when you perform layout on a
*manager that isn't added to the viewstack. Then you can use
*"this.isDirty()" to determine whether you need to re-layout the fields
*when the manager becomes visible.*/
if(this.isDirty())
{
//I'm not sure if I need to use "invokeAndWait" and not "invokeLater"
UiApplication.getUiApplication().invokeAndWait(new Runnable()
{
public void run()
{
for (int i = 0; i < getFieldCount(); i++)
{
/*This (custom) function makes sure the Field gets its
*size and position*/
layoutItem(getField(i));
}
}
});
//Make sure you set "dirty" to false, to make sure this only happens once
this.setDirty(false);
}
}
如果有人有更好的解决方案,我会很高兴听到它(并且可能会改进我的应用)。
答案 1 :(得分:0)
org.json.me.JSONArray ,它说“详细信息不可用 - VM不支持”。
在运行4.5和4.6 BB OS的设备上无法使用与JSON相关的内容。将其导入代码中。
从这里下载。
https://github.com/douglascrockford/JSON-java
它可以作为开源使用,然后将其用于您的应用程序。