Использование метода 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. Так что попробуйте...