2011-10-27 8 views
0

私はAndroidアプリのプログラミングとJavaにとってかなり新しいです。私は必要なものをすべて表示するためにWebViewを使用するようにアプリケーションを設定します。ユーザーは、HTMLボタンまたはリンクをクリックすることができます。これは、たとえば、別のページを表示するために、Android Javaクラスにリクエストを送信します。私は別のURL機能搭載を持ちたいpublic class JavaScriptInterfaceAndroid App:別のクラスからWebViewにloadUrlをロードする方法は?

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

は、そのため私は、私のメインクラスのロードこのようなWebViewのを持って

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

しかし、これはdoesn'tのでコンパイル:Activity cannot be resolved to a type

WebViewにJavaScriptInterfaceクラスからアクセスして別のURLをロードするにはどうすればよいですか?

答えて

1

Activityの内部クラスとしてクラスJavaScriptInterfaceを定義し、Activityのメンバー変数としてWebViewへの参照を保存します。

内部クラスは、彼らがで定義されたクラスのメンバ変数にアクセスすることができますので、あなたがこのようにコードを変更することができます。

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

ありがとうございます!できます – tabb

関連する問題