最近在做一个选题系统,学生登录进去后选择老师发布的选题,因为想方便获取,所以就新建一个application类来保存登录信息,而其它的数据(学生信息这些)就用litepal来创建数据库保存,现在问题是我登录进去后想访问数据库中另一张表时会报空崩溃,没创建application之前能正常访问,下面是报错信息,麻烦各位指导一下,感谢!!02-19 02:47:37.016 5584-5584/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                 Process: com.example.administrator.a2014052526, PID: 5584
                                                 java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' on a null object reference
                                                     at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:184)
                                                     at org.litepal.util.SharedUtil.getLastVersion(SharedUtil.java:57)
                                                     at org.litepal.parser.LitePalAttr.checkSelfValid(LitePalAttr.java:158)
                                                     at org.litepal.tablemanager.Connector.buildConnection(Connector.java:115)
                                                     at org.litepal.tablemanager.Connector.getWritableDatabase(Connector.java:61)
                                                     at org.litepal.tablemanager.Connector.getDatabase(Connector.java:94)
                                                     at org.litepal.crud.ClusterQuery.find(ClusterQuery.java:202)
                                                     at org.litepal.crud.ClusterQuery.find(ClusterQuery.java:188)
                                                     at com.example.administrator.a2014052526.MainActivity$2.onClick(MainActivity.java:134)
                                                     at android.support.v7.app.AlertController$AlertParams$3.onItemClick(AlertController.java:959)
                                                     at android.widget.AdapterView.performItemClick(AdapterView.java:334)
                                                     at android.widget.AbsListView.performItemClick(AbsListView.java:1531)
                                                     at android.widget.AbsListView$PerformClick.run(AbsListView.java:3667)
                                                     at android.widget.AbsListView$3.run(AbsListView.java:5590)
                                                     at android.os.Handler.handleCallback(Handler.java:739)
                                                     at android.os.Handler.dispatchMessage(Handler.java:95)
                                                     at android.os.Looper.loop(Looper.java:145)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5942)
                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                     at java.lang.reflect.Method.invoke(Method.java:372)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

解决方案 »

  1.   

    很明显空指针错误,在AndroidManifest设置Applicationn,就是name属性那一行<?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.zth.myapplication">
        <application
            android:name="MyApplication"
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name="com.example.zth.two.TwoActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>    </application></manifest>
      

  2.   

     我那里设置的是android:name="org.litepal.LitePalApplication",然后myApplication再继承LitePalApplication,这样写应该没问题吧?
      

  3.   

    Manifest里面设置的应该是MyApplication,然后让MyApplication继承LitePalApplication,正确写法应该是这样,可程序还是崩溃了,求指导!
      

  4.   

    Manifest里面设置的应该是MyApplication,然后让MyApplication继承LitePalApplication,正确写法应该是这样,可程序还是崩溃了,求指导!
    你这没代码指导不了