私のアプリのWebViewアクティビティで "A.B.func()"という形式のJavaScriptをサポートしたいと考えています。ここで WebView.addJavascriptInterfaceを使用してjavascript関数形式のJavaクラスを "A.B.func()"としてバインドする方法
はWebページのHTML & jsのコードはサンプルですなど:
<html>
<body>
<script type="text/javascript">
document.write("B.func1() return " + A.B.func());
</script>
</body>
</html>
そして、私のJavaコードは次のような次のとおりです。しかし、私は私の実行時に
public class MyDemo extends Activity {
private WebView mWebView;
public void onCreate(Bundle savedInstanceState) {
...
mWebView = (WebView)findViewById(R.id.webView1);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new AClass(), "A");
mWebView.loadUrl("file:///android_asset/mydemo.html");
}
final class AClass {
final class BClass {
BClass() {}
int func() { return 1; }
}
public BClass B = new BClass();
AClass() {}
}
}
それは正しい方法で実行することはできませんシミュレータ上のアプリ。だから私の質問がある TypeError : Result of expression 'A.B' [undefined] is not an object. at file:///android_asset/mydemo.html
:
1.私は私のJavaクラスに「ABfunc()」としてjavascriptのインタフェースフォーマットをバインドしたい場合、どのように私はそれを行うことができますし、LogCatは、次のような私に警告を送ります?
2.関数呼び出しではなく、javascriptクラスのプロパティを直接取得したい場合、どうすればいいですか? あなたの助けを期待Q2 利用 "するvar小道具= A.property" 使用しない "VARプロップ= A.getPropertyを()"
を表示するにはjavascriptのサンプル!ありがとうございました!