我以前使用过 JSNI,但我从来没有使用它传递函数指针作为参数,我不知道该怎么做。任何帮助表示赞赏!
问问题
2211 次
2 回答
5
您应该能够传递表示 JavaScript 函数对象的 JavaScriptObject 。不过,我不认为你可以用 Java 函数做任何事情。例如,您可以:
final native JavaScriptObjet myFuncCreator() /*-{
return function (x, y) { return y - x; };
}-*/
final native int myFuncUser(JavaScriptObject funcObj, int a, int b) /*-{
return funcObj(a,b);
}-*/
诚然,我没有尝试过这段代码,但我相信它应该可以工作。
于 2011-01-30T22:12:30.147 回答
2
与 sinelaw 的答案相同,这是一种获取回调的方法。
static final native JavaScriptObject createFunction(final Runnable runnable)
/*-{
return function() {
runnable.@java.lang.Runnable::run()();
}
}-*/
static final void registerOnClickCallback(Element element, final Runnable runnable) {
JavaScriptObject callback = createFunction(runnable);
_registerOnClickCallback(element, callback);
}
static final native void _registerOnClickCallback(Element element, JavaScriptObject callback)
/*-{
element.onclick = callback;
}-*/
希望这可以帮助!
于 2015-04-08T17:17:25.643 回答