开发者

Eclipse - Blackberry SDK - Debugging on device: "details unavailable - not supported by VM"

开发者 https://www.devze.com 2023-02-17 05:50 出处:网络
I\'m having a strange problem while debugging my Blackberry Application on a real device (BB Bold 9700). When I debug the same a开发者_运维百科pplication within the BB emulator, the app runs fine, but

I'm having a strange problem while debugging my Blackberry Application on a real device (BB Bold 9700). When I debug the same a开发者_运维百科pplication within the BB emulator, the app runs fine, but when I run it on the real device, the app behaves differently (custom painting goes completely wrong). What's even worse is that my Eclipse environment seems to be unable to view live objects correctly while being at a break point (debug time).

I've added a screenshot to illustrate the strange behaviour:

Eclipse - Blackberry SDK - Debugging on device: "details unavailable - not supported by VM"

As you can see, the app stops at the breakpoint within the IF statement, but the Variables pane says that the variable "methodName" equals null. Moreover, when I want to look at the variable "methodArguments" which is of type org.json.me.JSONArray, it says "details unavailable - not supported by VM".

Does anyone know what's going on here? My app works great on the emulator, but it's currently useless on the real device.

Thanks in advance!


I think I fixed it:

The problem was that I was laying out Fields on a manager that wasn't yet added to the viewstack.

What did the trick for me was overriding onDisplay() in the manager that contained the Fields that were displayed wrong:

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);
    }
}

If anyone has a better solution, I'd be glad to hear it (and maybe improve my app).


org.json.me.JSONArray, it says "details unavailable - not supported by VM".

the JSON related stuff is not available on device running 4.5 and 4.6 BB OS. Import it into the code.

Download it from here.
https://github.com/douglascrockford/JSON-java

it is available as Open Source and then use it into your applications.

0

精彩评论

暂无评论...
验证码 换一张
取 消