Android App:如何在另一个类的WebView中加载Url?

时间:2011-10-27 11:37:40

标签: java javascript android webview

我是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?

1 个答案:

答案 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");
        }
    }
}