我從恢復(後Activity
早已不見了(不是每次)的應用程序獲得這個logcat的它實際上是一個特定Fragment
,所以它的時候FragmentActivity
簡歷應用程序崩潰在啓動時。 - 空指針
12-18 18:45:33.315: E/AndroidRuntime(7593): FATAL EXCEPTION: AsyncTask #1
12-18 18:45:33.315: E/AndroidRuntime(7593): java.lang.RuntimeException: An error occured while executing doInBackground()
12-18 18:45:33.315: E/AndroidRuntime(7593): at android.os.AsyncTask$3.done(AsyncTask.java:299)
12-18 18:45:33.315: E/AndroidRuntime(7593): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
12-18 18:45:33.315: E/AndroidRuntime(7593): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
12-18 18:45:33.315: E/AndroidRuntime(7593): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
12-18 18:45:33.315: E/AndroidRuntime(7593): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
12-18 18:45:33.315: E/AndroidRuntime(7593): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
12-18 18:45:33.315: E/AndroidRuntime(7593): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
12-18 18:45:33.315: E/AndroidRuntime(7593): at java.lang.Thread.run(Thread.java:856)
12-18 18:45:33.315: E/AndroidRuntime(7593): Caused by: java.lang.NullPointerException
12-18 18:45:33.315: E/AndroidRuntime(7593): at com.---.---.DebtDataSource.payoffDebt(DebtDataSource.java:229)
12-18 18:45:33.315: E/AndroidRuntime(7593): at com.---.---.PlannerFragment$PlannerTask.doInBackground(PlannerFragment.java:131)
12-18 18:45:33.315: E/AndroidRuntime(7593): at com.---.---.PlannerFragment$PlannerTask.doInBackground(PlannerFragment.java:1)
12-18 18:45:33.315: E/AndroidRuntime(7593): at android.os.AsyncTask$2.call(AsyncTask.java:287)
12-18 18:45:33.315: E/AndroidRuntime(7593): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
12-18 18:45:33.315: E/AndroidRuntime(7593): ... 4 more
的主要活動是這樣的:
@Override
protected void onDestroy() {
super.onDestroy();
datasource.close();
finish();
}
在onResume()
沒有
的當時間之後Activity
已在後臺時,調用AsyncTask
。
問題是基於日誌的DoInBackground
。 (PlannerFragment
)
@Override
protected Void doInBackground(String... params) {
if (paymentTotal > allFee) {
totalMonths = datasource.payoffDebt(Double.valueOf(columnDebtTotal)); // this is line 131
finalDate = datasource.getDate(totalMonths);
allFeeLife = datasource.getLiftimeFees();
}
return null;
}
那麼空指針是空指針試圖從我的SQLite數據庫中抓取數據後。
(DebtDataSource
類)
public int payoffDebt(Double totalDebt) {
Cursor c = null;
if (DebtPlanner.PlanType.equals("highint")) { // line 229 -- NULL CRASH!
c = database.rawQuery("SELECT * FROM debt ORDER BY CAST("
+ MySQLiteHelper.COLUMN_APR + " as integer) DESC;", null);
}
再次,當在背景中很長一段時間後,重新開始Activity
(長足以要求task
上面在onActivityCreated
再次調用)這僅崩潰。
DebtDataSource的第229行是什麼? – panini
@panini我在最後一段代碼中對它進行了評論。 – KickingLettuce
「DebtPlanner」或「PlanType」爲空。請在初始化它們的地方驗證這個或後期代碼。 –