アクティビティに JSInterface を持つ WebView があります。
mWebView.addJavascriptInterface(new JSInterface(mWebView, this), "interfaceWebsite");
インターフェイスで関数を呼び出すときに、いくつかのビュー (Textview/Button) が変更されていることを確認したいと思います。
public void changeStep(int newStep){
step = newStep;
tvStep.setText("Etape "+step);
step_info = getString(R.string.step3_info);
}
}
step_info は機能します (オプション メニューの変更)。これは単なる文字列 var ですが、TextView ではなく、VM の中止をスローします。
この方法で関数を呼び出します (上記のコードで addWebsiteActivity は「this」です)。
addWebsiteActivity.changeStep(step);
これは適切な方法でそれを行うことは可能ですか?
ありがとう
ビュー階層を作成した元のスレッドのみがそのビューにアクセスできます
なぜ私は JSInterface から changeStep を呼び出すことができますが、アクティビティ クラス内で呼び出すことができますか?
そして解決策は...
runOnUiThread(new Runnable() {
public void run() {
step = newStep;
tvStep.setText("Etape "+step);
step_info = getString(R.string.step3_info);
}
});
このように、それがメイン スレッドのコードであることを認識します。しかし、上記の明示的なエラーを除いて、EclipseがVMの中止をスローするのは奇妙です...