WebView + ActionBarSherlock =网站没有加载,空白页面,为什么......?

时间:2013-03-27 16:48:07

标签: android android-webview actionbarsherlock

可能会有一些前置光标,所以我也更好地解释一下。我只想让webview显示一个操作栏。所以在sytles.xml中我将其称为基本主题:

parent="android:style/Theme.Holo.Light.NoActionBar"

我将该主题分配给了我的MainActivity,而不是整个应用程序。

由于我想在我的WebView活动中使用操作栏,因此我在清单中为该活动分配了以下内容:

<activity 
    android:name=".WebViewActivity"
    android:theme="@style/Theme.Sherlock.Light">
</activity>

我确保在我的清单中调用互联网权限,这是webview的活动代码和布局文件:

package com.name.here; //Removed for this question

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;

import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebViewActivity extends SherlockActivity {

private WebView webView;

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

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    //webView.loadUrl("http://www.google.com");

    webView.setWebViewClient(new WebViewClient(){

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

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.AboutMenuItem:
            return true;
        default: 
            return super.onOptionsItemSelected(item);

    }
}
}

和布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <WebView 
        android:id="@+id/webView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    />
</LinearLayout>

你可以看到,我试图打开谷歌。问题是它加载了一个空白页面。好吧,操作栏加载得很好但是WebView应该加载Google的活动的其余部分是空的。这就是我剩下的:

enter image description here

我应该注意,操作栏会填充项目和应用程序的名称。我刚把这些拿出来。操作栏加载得很好,但这就是所有加载的。

Logcat不提供任何内容,没有错误或警告。 任何帮助赞赏。我认为设置webview非常简单。

1 个答案:

答案 0 :(得分:1)

shouldOverrideUrlLoading的代码已损坏。它应该返回true或false,并且 not 执行自己的加载。 view.loadUrl()只会触发回shouldOverrideUrlLoading的电话,然后您就会崩溃。

请改为:

   public boolean shouldOverrideUrlLoading(WebView view, String url) {
      // do something to the url here if needed
      return false;
    }