2011-03-25 184 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; 
    } 

这种方法