Использование метода Object invoke(Object thiz, Object[] args) в BlackBerry

Кто-нибудь может объяснить, пожалуйста, как аргументы в invoke метод можно использовать правильно.

browserField.extendScriptEngine("interesting.test", new ScriptableFunction() {

    public Object invoke(Object thiz, Object[] args) throws Exception {

        Dialog.alert("Done");

        return super.invoke(thiz, args);
    }
});

У меня есть вызов выше метод в файле HTML следующим образом.

<button type="button" onclick="interesting.test()">Display Alert</button>

Когда я использую следующий код

System.out.println("# thiz : " + thiz.toString());

результат

[0.0] # thiz : net.rim.device.apps.internal.browser.olympia.dom.ScriptObjectShadow@a2f32d2a

и когда я использую этот код

System.out.println("# args : " + args.length);

результат

[0.0] # args : 0

который печатает на консоли.

Я использовал оба этих метода System.out внутри метода invoke. Также я обращался к документации API и все еще не мог понять, как передать значения этим двум аргументам и получить их.

1 ответ

Вы можете попробовать это, это сработало для меня

            try{

              browserField.extendScriptEngine("interesting.test", new ScriptableFunction() {

                public Object invoke(Object thiz, static Object[] args) throws Exception {

                    Dialog.alert(String.valueOf(args[0]).toString());

                 }
              });

            } catch(Exception e){
              //
            }

а затем из HTML сделать это

   <button type="button" onclick="interesting.test('cool')">Display Alert</button>

поскольку эти аргументы являются просто массивом объектов, которые могут означать наличие более одного параметра одновременно в целях гибкости, это похоже на аргументы, используемые в javascript. Так что попробуйте...

Другие вопросы по тегам