2011-01-30 8 views

答えて

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); 
}-*/ 

確かに、私はこのコードを試していないが、私はそれが動作するはずと信じています。

2

sinelawの答えと同じ行に沿って、ここにコールバックを取得する方法があります。

static final native JavaScriptObject createFunction(final Runnable runnable) 
/*-{ 
    return function() { 
     [email protected]::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; 
}-*/ 

関連する問題