Javascript コードから Java メソッドを呼び出そうとしています。これは、Phonegap を使用する Windows Phone 7 アプリ用です。
私のjavascriptコードには次のものがあります。
document.addEventListener("backbutton", onBackKeyDown, false);
function onBackKeyDown(){
}
そして、私のJavaコードには次のものがあります。
public static native void exportStaticMethod() /*-{
$wnd.onBackKeyDown =
$entry(this.@com.mycompany.myapp.client.MyApp::hideSettingsWidgets());
}-*/;
次に、 onModuleLoad() で次のように呼び出しています。
MyApp.exportStaticMethod();
にアラートがありますが、hideSettingsWidgets()
表示されません。
*編集* ここにいくつかのコードがあります。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();
}
あなたの中にある EventListener を追加しているようです
public native void setupJavaHandler() /*-{
var app = this;
var onBackKeyDown = $entry(function() {
app.@com.mycompany.myapp.client.MyApp::hideSettingsWidgets();
});
$doc.addEventListener("backbutton", onBackKeyDown, false);
}-*/;
そのため、どこが間違っているのかわかりません。あなたが言及した ArrayList<> を追加しませんでした。確信が持てず、ページが読み込まれたときにイベントリスナーが実行されていなかったためです。
showSettingsWidgets()
実行されることはないようです