Eclipse - Blackberry SDK - отладка на устройстве: «детали недоступны - не поддерживаются виртуальной машиной» - PullRequest
2 голосов
/ 14 марта 2011

У меня странная проблема при отладке приложения Blackberry на реальном устройстве (BB Bold 9700).Когда я отлаживаю то же самое приложение в эмуляторе BB, приложение работает нормально, но когда я запускаю его на реальном устройстве, приложение ведет себя по-другому ( пользовательская окраска идет совершенно неправильно ).Еще хуже то, что моя среда Eclipse, кажется, не может правильно просматривать живые объекты, находясь в точке останова (время отладки).

Я добавил скриншот, чтобы проиллюстрировать странное поведение: enter image description here

Как видите, приложение останавливается на точке останова в операторе IF, но на панели переменных указано, что переменная methodName равна нулю.Более того, когда я хочу посмотреть на переменную "methodArguments", которая имеет тип org.json.me.JSONArray , она говорит: " детали недоступны - не поддерживается VM ".

Кто-нибудь знает, что здесь происходит?Мое приложение отлично работает на эмуляторе, но в настоящее время оно бесполезно на реальном устройстве.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 24 ноября 2011

org.json.me.JSONArray , там написано " детали недоступны - не поддерживаются VM ".

материалы, связанные с JSON, недоступны на устройствепод управлением 4.5 и 4.6 ББ ОС.Импортируйте это в код.

Загрузите его отсюда.https://github.com/douglascrockford/JSON-java

он доступен как Open Source, а затем используется в ваших приложениях.

0 голосов
/ 15 марта 2011

Я думаю, что я исправил это:

Проблема заключалась в том, что я выкладывал поля на менеджера, который еще не был добавлен в стэк.

Что мне подвелопереопределение 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);
    }
}

Если у кого-то есть лучшее решение, я буду рад его услышать (и, возможно, улучшить свое приложение).*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...