0

谁能解释一下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 方法。我也参考了 API 文档,但我仍然不明白如何将值传递给这两个参数并检索它们。

4

1 回答 1

0

你可以试试这个,它对我有用

            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 中使用的参数。所以试试看...

于 2013-04-02T14:43:13.087 回答