2011-03-25 189 views
4

Android允許在應用程序中使用WebView顯示URL的內容。 但是,由於某種原因,它不適合我。下面是蔭使用的代碼:Android應用程序開發 - WebView無法正常工作

 
package com.news; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class NewsActivity extends Activity { 
    WebView mWebView; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     mWebView = (WebView) findViewById(R.id.webview); 
     mWebView.setWebViewClient(new NewsClient()); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.getSettings().setDomStorageEnabled(true); 
     mWebView.loadUrl("http://www.androidpeople.com"); 
    } 

    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
      mWebView.goBack();    
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

    private class NewsClient extends WebViewClient { 

     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      System.out.println("URL: " + url); 
      view.loadUrl(url); 
      return true; 
     } 
    } 
} 
+0

。你有在Android清單文件的互聯網訪問權限? – sat 2011-03-25 11:07:37

+0

你想做什麼? – Siten 2011-03-25 11:11:38

+0

由於某些原因,我們不能給你一個答案。 – tacone 2011-03-25 11:19:02

回答

2

很明顯!

您正在實施新的WebViewClient,其中您覆蓋了shouldOverrideUrlLoading方法。此方法針對您正在加載的每個網址進行調用。你在那裏做什麼?你正在返回true(這意味着加載應該被重寫),然後開始加載相同的URL!因此,url加載永遠不會發生。

只要刪除該行:

mWebView.setWebViewClient(new NewsClient()); 
+0

這工作..謝謝..我有點新的整個android開發的東西..所以在打擊和試用的基礎上嘗試的東西..再次感謝.. – 2011-03-27 10:13:03

+0

有一個小問題..提交表單顯示在第一頁...它打開瀏覽器中的下一個頁面,而不是應用程序..我如何解決它? – 2011-03-28 05:49:34

+0

您應該返回false。 – 2017-10-26 08:33:52

0

在你的Android清單中添加這一點,如果沒有添加:

<uses-permission android:name="android.permission.INTERNET" /> 

這條線一定是你的AndroidManifest.xml文件的<清單>元素中。

0

加入這一行: mWebView.setWebViewClient(new NewsClient());

shouldOverrideUrlLoading應該return false

+0

你能否請[編輯]解釋爲什麼這段代碼回答這個問題?僅限代碼答案[阻止](http://meta.stackexchange.com/q/148272/274165),因爲他們沒有教導解決方案。 – 2015-09-30 01:54:13

0

你的代碼是在我的Android設備4.2.2工作,沒有在您的實現沒有問題,你需要做的唯一事情是重寫你的方法是這樣的:

@Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     System.out.println("URL: " + url); 
     view.loadUrl(url); 
     return true; 
    } 

這種方法