我创建了一个活动,在LinearLayout中有一个标题和一个web视图。在onResume()方法中它调用webView.loadUrl(url)。问题在于,该活动首先显示标题,屏幕其余部分为空白,然后启动设备浏览器并显示URL页面。我想看到的是在标题下面的WebView中显示的页面。有什么问题吗?

编辑: 好吧,我进一步搜索了一下,找到了这个:

单击url会打开默认浏览器

它指向WebView教程。

只需实现web客户端并设置它。


当前回答

如果您看到一个空页面,请启用JavaScript。

webView.setWebViewClient(new WebViewClient());
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webView.loadUrl(url);

其他回答

如果您看到一个空页面,请启用JavaScript。

webView.setWebViewClient(new WebViewClient());
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webView.loadUrl(url);

简单回答你可以这样用

public class MainActivity extends AppCompatActivity {

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         WebView webView = new WebView(this);
         setContentView(webView);
         webView.setWebViewClient(new WebViewClient());
         webView.loadUrl("http://www.google.com");
   }
}

让你的活动像这样。

public class MainActivity extends Activity {
WebView browser;

@Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // find the WebView by name in the main.xml of step 2
    browser=(WebView)findViewById(R.id.wvwMain);

    // Enable javascript
    browser.getSettings().setJavaScriptEnabled(true);  

    // Set WebView client
    browser.setWebChromeClient(new WebChromeClient());

    browser.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
                }
        });
     // Load the webpage
    browser.loadUrl("http://google.com/");
   }
}

如果你正在使用webChromeClient,我会建议你同时使用webChromeClient和webViewClient。因为webChromeClient没有提供shouldOverrideUrlLoading。两者都可以使用。

        webview.webViewClient = WebViewClient()
        webview.webChromeClient = Callback()

private inner class Callback : WebChromeClient() {
        override fun onProgressChanged(view: WebView?, newProgress: Int) {
            super.onProgressChanged(view, newProgress)
           
            if (newProgress == 0) {
                progressBar.visibility = View.VISIBLE
            } else if (newProgress == 100) {
                progressBar.visibility = View.GONE
            }
        }

    }

我的问题是,在不打开外部浏览器的情况下切换网站之前,我需要做一个clearHistory。

    @Override
    public void onPageFinished(WebView view, String url) {

        webView_.clearHistory();

        super.onPageFinished(webView_, url);
    }