2011-10-27 89 views
0

我對Android應用程序編程和Java相當陌生。我希望我的應用程序使用WebView來顯示所需的所有內容。用戶可以點擊HTML按鈕或鏈接,這會向我的Android Java類發送請求,例如顯示另一個頁面。Android應用程序:如何從另一個類的WebView中loadUrl?

爲此,我有我的主要類加載web視圖這樣的:

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我想有一個函數加載另一個網址:

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

如何從我的JavaScriptInterface類訪問WebView以加載另一個URL?

回答

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

謝謝你!有用 – tabb

相關問題