如何解决Webview浏览器Android应用程序中的错误?

时间:2014-11-14 08:15:40

标签: javascript android browser webview

我是Android新手。我正在尝试构建一个简单的Web视图浏览器android应用程序。这个应用程序对我很重要。但是应用程序没有打开并且崩溃。日志cat中有很多错误。如何解决这个错误。请任何程序员帮助我。谢谢

记录错误txt

11-14 13:31:03.922: E/AndroidRuntime(901): FATAL EXCEPTION: main
11-14 13:31:03.922: E/AndroidRuntime(901): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ronny.yesjarweb/com.ronny.yesjarweb.MainActivity}: java.lang.NullPointerException
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.app.ActivityThread.access$600(ActivityThread.java:130)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.os.Handler.dispatchMessage(Handler.java:99)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.os.Looper.loop(Looper.java:137)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.app.ActivityThread.main(ActivityThread.java:4745)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at java.lang.reflect.Method.invokeNative(Native Method)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at java.lang.reflect.Method.invoke(Method.java:511)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at dalvik.system.NativeStart.main(Native Method)
11-14 13:31:03.922: E/AndroidRuntime(901): Caused by: java.lang.NullPointerException
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.view.ViewGroup.addViewInner(ViewGroup.java:3377)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.view.ViewGroup.addView(ViewGroup.java:3249)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.view.ViewGroup.addView(ViewGroup.java:3225)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:275)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:265)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.app.Activity.setContentView(Activity.java:1887)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.support.v7.app.ActionBarActivity.superSetContentView(ActionBarActivity.java:220)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.support.v7.app.ActionBarActivityDelegateICS.setContentView(ActionBarActivityDelegateICS.java:105)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:81)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at com.ronny.yesjarweb.MainActivity.onCreate(MainActivity.java:52)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.app.Activity.performCreate(Activity.java:5008)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
11-14 13:31:03.922: E/AndroidRuntime(901): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
11-14 13:31:03.922: E/AndroidRuntime(901): 	... 11 more

MainActivity.java

package com.example.package;

import android.annotation.SuppressLint;
import android.app.DownloadManager;
import android.app.DownloadManager.Request;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

public class MainActivity
  extends ActionBarActivity
{
  private static final View activity_main = null;
private static final int exit = 0;
public static File localFile2 = null;
Toast toast;
  WebView webview;
private int yesjar_web;
private int main;
private int refresh;
private int back;
private int forward;
  
  public String getFileName(String paramString)
    throws UnsupportedEncodingException
  {
    return URLDecoder.decode(paramString.substring(1 + paramString.lastIndexOf('/')), "UTF-8");
  }
  
  @SuppressLint({"SetJavaScriptEnabled", "NewApi"})
  protected void onCreate(Bundle paramBundle)
  {
    super.onCreate(paramBundle);
    setContentView(activity_main);
    this.webview = ((WebView)findViewById(yesjar_web));
    this.webview.setWebChromeClient(new WebChromeClient()
    {
      private CharSequence app_name;

	public void onProgressChanged(WebView paramAnonymousWebView, int paramAnonymousInt)
      {
        MainActivity.this.setTitle("Loading...");
        MainActivity.this.setProgress(paramAnonymousInt * 100);
        if (paramAnonymousInt == 100) {
          MainActivity.this.setTitle(app_name);
        }
      }
    });
    this.webview.setLayerType(1, null);
    ChildBrowserClient localChildBrowserClient = new ChildBrowserClient();
    this.webview.setWebViewClient(localChildBrowserClient);
    WebSettings localWebSettings = this.webview.getSettings();
    this.webview.setInitialScale(1);
    localWebSettings.setBuiltInZoomControls(true);
    localWebSettings.setPluginState(WebSettings.PluginState.ON);
    localWebSettings.setDomStorageEnabled(true);
    this.webview.loadUrl("http://google.com");
    this.webview.setId(5);
    this.webview.setInitialScale(0);
    this.webview.requestFocus();
    this.webview.requestFocusFromTouch();
  }
  
  public boolean onCreateOptionsMenu(Menu paramMenu)
  {
    getMenuInflater().inflate(main, paramMenu);
    return true;
  }
  
  public boolean onKeyDown(int paramInt, KeyEvent paramKeyEvent)
  {
    if ((paramInt == 4) && (this.webview.canGoBack()))
    {
      this.webview.goBack();
      return true;
    }
    return super.onKeyDown(paramInt, paramKeyEvent);
  }
  
  public boolean onOptionsItemSelected(MenuItem paramMenuItem)
  {
    int i = paramMenuItem.getItemId();
    if (i == refresh)
    {
      String str = this.webview.getUrl().toString();
      this.webview.loadUrl(str);
      return true;
    }
    if (i == back) {
      this.webview.goBack();
    }
    for (;;)
    {
      return super.onOptionsItemSelected(paramMenuItem);
    }
  }
  
  public class ChildBrowserClient
    extends WebViewClient
  {
    public ChildBrowserClient() {}
    
    public void onPageFinished(WebView paramWebView, String paramString)
    {
      super.onPageFinished(paramWebView, paramString);
    }
    
    public void onPageStarted(WebView paramWebView, String paramString, Bitmap paramBitmap)
    {
      super.onPageStarted(paramWebView, paramString, paramBitmap);
    }
    
    @SuppressLint({"InlinedApi", "NewApi"})
    public boolean shouldOverrideUrlLoading(WebView paramWebView, String paramString)
    {
      boolean bool = true;
      String str1 = MimeTypeMap.getFileExtensionFromUrl(paramString);
      DownloadManager localDownloadManager = null;
      DownloadManager.Request localRequest = null;
      if (str1 != null)
      {
        String str2 = MimeTypeMap.getSingleton().getMimeTypeFromExtension(str1);
        if ((str2 != null) && ((str2.toLowerCase().contains("video")) || (str1.toLowerCase().contains("mov")) || (str1.toLowerCase().contains("mp3")) || (str1.toLowerCase().contains("3gp"))))
        {
          localDownloadManager = (DownloadManager)MainActivity.this.getSystemService("download");
          localRequest = new DownloadManager.Request(Uri.parse(paramString));
        }
      }
      try
      {
        File localFile1 = new File(Environment.getExternalStorageDirectory(), MainActivity.this.getFileName(paramString));
        localFile2 = localFile1;
      }
      catch (UnsupportedEncodingException localUnsupportedEncodingException)
      {
        for (;;)
        {
          localUnsupportedEncodingException.printStackTrace();
          File localFile2 = null;
        }
      }
      localRequest.setDescription("Downloading from YesJar Web");
      localRequest.setNotificationVisibility(1);
      localRequest.setDestinationUri(Uri.fromFile(localFile2));
      localDownloadManager.enqueue(localRequest);
      bool = false;
      if (bool) {
        paramWebView.loadUrl(paramString);
      }
      Log.v("blank", paramString.toString());
      return bool;
    }
  }
}

1 个答案:

答案 0 :(得分:0)

使用以下

setContentView(R.layout.activity_main);

而不是

setContentView(activity_main);

findViewById(R.id.yesjar_web)

而不是

findViewById(yesjar_web)