JavaScriptメソッドからJavaメソッドを呼び出そうとしています。これは、Phonegapを使用しているWindows Phone 7アプリ用です。GWT JSNI javascript to Javaが動作しない
私のjavascriptコードには次のものがあります。
document.addEventListener("backbutton", onBackKeyDown, false);
function onBackKeyDown(){
}
そして、私のJavaコードで、私は次のことを持っています。そして、onModuleLoad上で
public static native void exportStaticMethod() /*-{
$wnd.onBackKeyDown =
$entry([email protected]::hideSettingsWidgets());
}-*/;
は()私はそうのようにそれを呼び出しています:
MyApp.exportStaticMethod();
は、それは私がhideSettingsWidgets()
でアラートを持っていますが、それは決して示さなかっます動作しません。
* EDIT * は、ここではいくつかのより多くのコードです。 EventListenerはJavascriptに追加されていません。具体的には、Javaコードとともに追加されます。リスナーを元々登録することができなかったので、ここに私が追加したものがあります。
public static native void removeBackListener() /*-{
$wnd.removeTheListener();
}-*/;
そして、ここに私のJavaScript
function removeTheListener(){
document.removeEventListener("backbutton", onBackKeyDown, false);
}
でhideSettingsWidgets()
public void hideSettingsWidgets(){
for(int i=0;i<settingsScreenWidgets.length;i++){
settingsScreenWidgets[i].setVisible(false);
}
alertString("Working");
removeBackListener();
}
に私の呼び出しであり、私はあなたがshowSettingsWidgets()
P
の内側に私を与えたメソッドを呼び出していますrivate void showSettingsWidgets(){
for(int i=0;i<settingsScreenWidgets.length;i++){
settingsScreenWidgets[i].setVisible(true);
}
setCurrentImage();
setOnOffImage();
setupJavaHandler();
}
それは私が間違っているつもりどこ
public native void setupJavaHandler() /*-{
var app = this;
var onBackKeyDown = $entry(function() {
[email protected]::hideSettingsWidgets();
});
$doc.addEventListener("backbutton", onBackKeyDown, false);
}-*/;
は、だから私はわからないの内側にあるのEventListenerを追加しているように見えるん。 ArrayList <を追加しませんでした。なぜなら、ページがロードされたときにイベントリスナーが実行されていなかったからです。
addEventListener
コードはおそらく正しい、ページのロード時実行されている?
こんにちは。 addEventListenerコードは、ページがロードされたときに追加または実行されません。具体的には、Javaコードに追加されます。私はまた、javascript関数を呼び出すことによってそれを削除します。上記の関連コードを追加しました。助けてくれてありがとう。 – james
また、ホストされたhtmlページに空のonBackKeyDown関数が必要なのは確実ですか? – james
正常に動作している必要があります。 GWT Phonegapをダウンロードしたところ、同じことをしています。 IEのモバイルがJSNIを完全にサポートしていないと、私は驚かないでしょう。 – james