【发布时间】:2020-06-05 16:44:18
【问题描述】:
我的应用程序在ToastOnPostExecute 上崩溃。
我试图将 context 的 MainActivity() 设置为 Toast 中的上下文,但它抛出了相同的异常
例外是
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.content.res.Resources android.content.Context.getResources()”
发生了什么?我该如何解决?
我是从另一个onPostExecute 的AsyncTask 调用这个AsyncTask 的另一个AsyncTask
InsertInDateDb( MainActivity(), dateEntity).execute()
AsyncTask 在MainActivity
private class InsertInDateDb(var context: MainActivity, var dateEntity: DateEntity) :
AsyncTask<Void, Void, Boolean>() {
override fun doInBackground(vararg p0: Void?): Boolean {
val dateRoomDatabase: DateRoomDatabase = DateRoomDatabase.getDateDb(context)!!
val dateEntity1 = dateEntity
dateRoomDatabase!!.getDateDao().insertDate(dateEntity)
return true
}
override fun onPostExecute(result: Boolean?) {
if (result!!) {
try {
Toast.makeText(
MainActivity(),
"Entry added to date database",
Toast.LENGTH_LONG
).show()
} catch (e: Exception) {
Log.d("tag", "Exception $e")
}
}
}
}
【问题讨论】:
-
你在哪里以及如何传递上下文/MainActivity?也许有一个错误。我还将上下文从 context: MainActivity 更改为 context: Context。
-
@Colibri 你是对的。我在调用 asyncTask 时将 MainActivity() 作为上下文传递
-
但是传递 'this' 不起作用,因为我是从另一个 asyncTask 的 onPostExecute 调用它。我该如何解决?
-
我现在已经添加了我的 cmets 作为答案,所以这里的 cmets 不会变得太多 :) 希望它有所帮助!
标签: android kotlin android-asynctask