4

以前にJSNIを使用したことがありますが、JSNIを使用するパラメーターとして関数ポインターを渡す必要がなく、これを行う方法がわかりません。どんな助けでも大歓迎です!

4

2 に答える 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 に答える