应用程序崩溃与WebView [英] App Crash with WebView

查看:2850
本文介绍了应用程序崩溃与WebView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请帮助我。我想在我的应用程序中放置一个WebView。如果我做一个新的项目,它工作正常。但是当我想将它放在另一个应用程序中时会崩溃。

Please help me. I want to put a WebView in my app. If i make a new project it works fine. But when i want to put it in another app it crash.

包括Mainactivity / Java文件/布局文件/ logcat

Included Mainactivity / Java file / layout file / logcat

MainActivity

MainActivity

import android.app.FragmentManager;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {
private WebView mWebView;

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
        mWebView = (WebView) findViewById(R.id.webaanhoudingskaart);
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        // Force links and redirects to open in the WebView instead of in a browser
        mWebView.setWebViewClient(new WebViewClient());
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

}
@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();
    FragmentManager fragmentManager = getFragmentManager();

    if (id == R.id.nav_algemeen_toestand) {
       fragmentManager.beginTransaction()
               .replace(R.id.content_frame
               , new Algemeen_Toestand())
               .commit();
    } else if (id == R.id.nav_algemeen_opdracht) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Algemeen_Opdracht())
                .commit();
    } else if (id == R.id.nav_algemeen_uitvoering) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Algemeen_Uitvoering())
                .commit();
    } else if (id == R.id.nav_algemeen_verzoring) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Algemeen_Verzorging())
                .commit();
    } else if (id == R.id.nav_algemeen_tunue) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Algemeen_Tunue())
                .commit();
    } else if (id == R.id.nav_algemeen_bevelvoering) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Algemeen_Bevelvoering())
                .commit();
    } else if (id == R.id.nav_algemeen_scenario) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Algemeen_Scenario())
                .commit();
    } else if (id == R.id.nav_operationeel_wedstrijdinformatie) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Operationeel_Wedstrijdinformatie())
                .commit();
    } else if (id == R.id.nav_operationeel_tijdsschema) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Operationeel_Tijdsschema())
                .commit();
    } else if (id == R.id.nav_operationeel_indeling) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Operationeel_Indeling())
                .commit();
    } else if (id == R.id.nav_operationeel_verbindingsschema) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Operationeel_Verbindingsschema())
                .commit();
    } else if (id == R.id.nav_operationeel_stdaion) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Operationeel_Stadion())
                .commit();
    } else if (id == R.id.nav_operationeel_positie) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Operationeel_Positie())
                .commit();
    } else if (id == R.id.nav_operationeel_aanhoudingskaart) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Operationeel_Aanhoudingskaart())
                .commit();
    } else if (id == R.id.nav_operationeel_stdionverboden) {
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame
                        , new Operationeel_Stadionverboden())
                .commit();
    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

Java

package remco.politiewillemiiapp;

import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;





/**
 * Created by Remco on 6-4-2016.
  */
public class Operationeel_Aanhoudingskaart extends Fragment {
View myView;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    myView = inflater.inflate(R.layout.operationeel_aanhoudingskaart, container, false);
    return myView;

}

布局

Layout

<WebView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/webaanhoudingskaart" />
 </RelativeLayout>

LogCat

04-21 21:27:41.151 29717-29717/? E/Zygote: v2
04-21 21:27:41.151 29717-29717/? I/libpersona: KNOX_SDCARD checking this for 10375
04-21 21:27:41.151 29717-29717/? I/libpersona: KNOX_SDCARD not a persona
04-21 21:27:41.151 29717-29717/? I/SELinux: Function: selinux_compare_spd_ram, index[1], SPD-policy is existed. and_ver=SEPF_SM-G920F_5.1.1 ver=38
04-21 21:27:41.151 29717-29717/? W/SELinux: Function: selinux_compare_spd_ram, index[1], priority [2], priority version is VE=SEPF_SECMOBILE_6.0.1_0004
04-21 21:27:41.151 29717-29717/? E/Zygote: accessInfo : 0
04-21 21:27:41.151 29717-29717/? W/SELinux: SELinux: seapp_context_lookup: seinfo=default, level=s0:c512,c768, pkgname=remco.politiewillemiiapp 
04-21 21:27:41.151 29717-29717/? I/art: Late-enabling -Xcheck:jni
04-21 21:27:41.181 29717-29717/? D/TimaKeyStoreProvider: TimaSignature is unavailable
04-21 21:27:41.181 29717-29717/? D/ActivityThread: Added TimaKeyStore provider
04-21 21:27:41.221 29717-29717/remco.politiewillemiiapp W/ResourcesManager: getTopLevelResources: /data/app/remco.politiewillemiiapp-2/base.apk / 1.0 running in remco.politiewillemiiapp rsrc of package remco.politiewillemiiapp
04-21 21:27:41.221 29717-29717/remco.politiewillemiiapp I/InjectionManager: Inside getClassLibPath + mLibMap{0=, 1=}
04-21 21:27:41.221 29717-29717/remco.politiewillemiiapp D/ResourcesManager: For user 0 new overlays fetched Null
04-21 21:27:41.241 29717-29717/remco.politiewillemiiapp I/InjectionManager: Inside getClassLibPath caller 
04-21 21:27:41.241 29717-29717/remco.politiewillemiiapp W/System: ClassLoader referenced unknown path: /data/app/remco.politiewillemiiapp-2/lib/arm64
04-21 21:27:41.241 29717-29717/remco.politiewillemiiapp D/InjectionManager: InjectionManager
04-21 21:27:41.241 29717-29717/remco.politiewillemiiapp D/InjectionManager: fillFeatureStoreMap remco.politiewillemiiapp
04-21 21:27:41.241 29717-29717/remco.politiewillemiiapp I/InjectionManager: Constructor remco.politiewillemiiapp, Feature store :{}
04-21 21:27:41.241 29717-29717/remco.politiewillemiiapp I/InjectionManager: featureStore :{}
04-21 21:27:41.251 29717-29717/remco.politiewillemiiapp W/ResourcesManager: getTopLevelResources: /data/app/remco.politiewillemiiapp-2/base.apk / 1.0 running in remco.politiewillemiiapp rsrc of package remco.politiewillemiiapp
04-21 21:27:41.251 29717-29717/remco.politiewillemiiapp W/ResourcesManager: getTopLevelResources: /data/app/remco.politiewillemiiapp-2/base.apk / 1.0 running in remco.politiewillemiiapp rsrc of package remco.politiewillemiiapp
04-21 21:27:41.321 29717-29717/remco.politiewillemiiapp D/AbsListView: Get MotionRecognitionManager
04-21 21:27:41.321 29717-29717/remco.politiewillemiiapp E/MotionRecognitionManager: mSContextService = android.hardware.scontext.ISContextService$Stub$Proxy@c948c05
04-21 21:27:41.321 29717-29717/remco.politiewillemiiapp E/MotionRecognitionManager: motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@ec7545a
04-21 21:27:41.321 29717-29717/remco.politiewillemiiapp E/MotionRecognitionManager: motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@ec7545a
04-21 21:27:41.821 29717-29717/remco.politiewillemiiapp D/skia: ---- fAsset->read(2769) returned 0
04-21 21:27:41.831 29717-29717/remco.politiewillemiiapp D/AndroidRuntime: Shutting down VM
04-21 21:27:41.831 29717-29717/remco.politiewillemiiapp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                      Process: remco.politiewillemiiapp, PID: 29717
                                                                      java.lang.RuntimeException: Unable to start activity ComponentInfo{remco.politiewillemiiapp/remco.politiewillemiiapp.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.webkit.WebSettings android.webkit.WebView.getSettings()' on a null object reference
                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253)
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
                                                                          at android.app.ActivityThread.access$1100(ActivityThread.java:221)
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                          at android.os.Looper.loop(Looper.java:158)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:7224)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
                                                                       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.webkit.WebSettings android.webkit.WebView.getSettings()' on a null object reference
                                                                          at remco.politiewillemiiapp.MainActivity.onCreate(MainActivity.java:26)
                                                                          at android.app.Activity.performCreate(Activity.java:6876)
                                                                          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206)
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 
                                                                          at android.app.ActivityThread.access$1100(ActivityThread.java:221) 
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 
                                                                          at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                          at android.os.Looper.loop(Looper.java:158) 
                                                                          at android.app.ActivityThread.main(ActivityThread.java:7224) 
                                                                          at java.lang.reflect.Method.invoke(Native Method) 
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 


推荐答案


您尚未初始化您的webSetting,因此它显示错误null对象引用。请初始化它并重新运行该项目。

You haven't initialized your webSetting, so its showing the error "null object reference". Please initialize it and rerun the project.



WebSettings webSettings = new WebSettings();

这篇关于应用程序崩溃与WebView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆