1

これには少し前兆があるかもしれないので、それについても説明します。アクションバーを表示するのはWebビューのみです。そのため、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>

ご覧のとおり、Google を開こうとしました。問題は、空白のページが読み込まれることです。アクション バーは正常に読み込まれますが、WebView が Google を読み込むはずの残りのアクティビティは空です。これは私が残したものです:

ここに画像の説明を入力

アクション バーにはアイテムとアプリの名前が表示されることに注意してください。この画像でそれらを取り出しました。アクションバーは問題なく読み込まれますが、読み込まれるのはそれだけです。

Logcat は、エラーや警告を何も提供しません。どんな助けでも感謝します。WebView の設定は非常に簡単だと思いました。

4

1 に答える 1

1

あなたのコードshouldOverrideUrlLoadingは壊れています。true または false を返す必要があり、独自の読み込みは行わないでください。view.loadUrl()コールバックをトリガーするだけshouldOverrideUrlLoadingで、クラッシュが発生します。

代わりにこれを行います:

   public boolean shouldOverrideUrlLoading(WebView view, String url) {
      // do something to the url here if needed
      return false;
    }
于 2013-03-27T16:53:19.180 に答える