Android应用程序:如何在WebView中从另一个类使用loadURL? [英] Android App: How to loadUrl in WebView from another class?

查看:168
本文介绍了Android应用程序:如何在WebView中从另一个类使用loadURL?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

I'm很新的Andr​​oid应用程序和Java。我想我的应用程序用于显示所有所需要的网页视图。用户可以在一个HTML按钮点击或关联这个发送到我的Andr​​oid的Java类的要求,例如显示另一页。

I´m quite new to Android app programming and Java. I want my App to use a WebView for showing all what is needed. The user can click on an HTML-Button or Link an this sends a request to my Android java class, for example to show another page.

为此,我有我的主类加载网页视图是这样的:

Therefor I have my main class loading the Webview like this:

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");

公共类JavaScriptInterface 我想有一个函数加载另一个网址:

In the public class JavaScriptInterface I want to have a function loading another URL:

public void showOffers() {
    WebView myWebView = (WebView) ((Activity) mContext).findViewById(R.id.webview);
    myWebView.loadUrl("file:///android_asset/html/offers.html");
}

但是,这doesn't编译,因为:活动不能被解析为一个类型

我怎样才能从我的JavaScriptInterface类访问的WebView加载另一个URL?

How can I access the WebView from my JavaScriptInterface class to load another URL?

推荐答案

定义类 JavaScriptInterface 的内部类的活动的并保存参考的WebView 作为你的活动的成员变量

Define the class JavaScriptInterface as inner class of your Activity and store the reference to the WebView as member variable of your Activity.

由于内部类可以访问它们中定义的类的成员变量,你可以改变你的code这样:

Because inner classes can access member variables of the class they are defined in, you can change your code to this:

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

这篇关于Android应用程序:如何在WebView中从另一个类使用loadURL?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆