我收到來自Google的隨機NullPointerException崩潰報告,無法複製。我正在使用擴展OrmLiteSqliteOpenHelper的類的靜態引用。輔助器在擴展SherlockFragmentActivity的主類中初始化。NullPointerException崩潰報告使用靜態DatabaseHelper
if (DatabaseHelper.getInstance() == null) {
DatabaseHelper.setInstance(this.getApplicationContext());
}
起初我雖然當該裝置被旋轉或發送到背景可能出現它。但是沒有任何測試能夠重現這個問題。
無處的代碼是靜態mHelper變量設置爲null
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
…
private static DatabaseHelper mHelper;
…
public static DatabaseHelper getInstance() {
return DatabaseHelper.mHelper;
}
public static void setInstance(Context context) {
DatabaseHelper.mHelper = new DatabaseHelper(context);
}
…
}
有誰有什麼可能會導致此任何想法?
如下的報告之一:
java.lang.RuntimeException: Unable to start activity ComponentInfo{au.com.dcbs.tradies/au.com.dcbs.tradies.presentation.document.DocumentActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2049)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2083)
at android.app.ActivityThread.access$600(ActivityThread.java:134)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1233)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4697)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at bd.a(Document.java:654)
at au.com.dcbs.tradies.presentation.document.DocumentActivity$a.b(DocumentActivity.java:102)
at au.com.dcbs.tradies.presentation.document.DocumentActivity$a.onActivityCreated(DocumentActivity.java:78)
at e.a(FragmentManager.java:891)
at e.a(FragmentManager.java:1080)
at e.a(FragmentManager.java:1062)
at e.k(FragmentManager.java:1810)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:501)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1133)
at android.app.Activity.performStart(Activity.java:4549)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2022)
... 11 more
線654在該方法中的第一行:
public static Document get(long id, Context context) {
DocumentEntity entity = DatabaseHelper.getInstance().getDocumentDao().queryForId((int)id);
Document doc = new Document(entity, context);
return doc;
}
getDocumentDao返回類型的對象com.j256.ormlite.dao.RuntimeExceptionDao
我已經添加的代碼段654不知道如何擴展應用一流的,但感激你指出了。絕對是一個更好的面向對象方法,謝謝。 – RobCroll