我是Android应用程序编程和Java的新手。我希望我的应用程序使用WebView显示所需的所有内容。用户可以单击HTML按钮或链接,这会向我的Android java类发送请求,例如显示另一个页面。
因此我的主要类加载了Webview,如下所示:
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
myWebView.setWebViewClient(new WebViewClient());
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("file:///android_asset/html/status01.html");
在public class JavaScriptInterface
我想要一个加载另一个URL的函数:
public void showOffers() {
WebView myWebView = (WebView) ((Activity) mContext).findViewById(R.id.webview);
myWebView.loadUrl("file:///android_asset/html/offers.html");
}
但这不能编译,因为:Activity cannot be resolved to a type
如何从JavaScriptInterface类访问WebView以加载其他URL?
答案 0 :(得分:1)
将班级JavaScriptInterface
定义为Activity
的内部班级,并将对WebView
的引用存储为Activity
的成员变量。
因为内部类可以访问它们所定义的类的成员变量,所以可以将代码更改为:
MyWebActivity extends Activity{
private WebView myWebView;
protected void onCreate(Bundle bundle){
myWebView = (WebView) findViewById(R.id.webview);
myWebView.addJavascriptInterface(new JavaScriptInterface(), "Android");
myWebView.setWebViewClient(new WebViewClient());
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("file:///android_asset/html/status01.html");
}
private class JavaScriptInterface{
JavaScriptInterface(){
}
public void showOffers() {
myWebView.loadUrl("file:///android_asset/html/offers.html");
}
}
}