Android-приложение: как загрузить Url в WebView из другого класса? - PullRequest
0 голосов
/ 27 октября 2011

Я новичок в программировании приложений для Android и Java. Я хочу, чтобы мое приложение использовало WebView для отображения всего, что нужно. Пользователь может щелкнуть HTML-кнопку или ссылку и отправит запрос в мой класс Java для Android, например, чтобы показать другую страницу.

Для этого у меня есть основной класс, загружающий 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

Как получить доступ к WebView из моего класса JavaScriptInterface для загрузки другого URL-адреса?

1 Ответ

1 голос
/ 27 октября 2011

Определите класс 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");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...