gpt4 book ai didi

android - 无法在 asyncTask 的 onPostExecute 中 Toast 消息

转载 作者:行者123 更新时间:2023-12-04 06:41:13 25 4
gpt4 key购买 nike

我的应用程序在 OnPostExecute 中的 Toast 上崩溃。

我尝试将 context 替换为 MainActivity() 作为 Toast 中的上下文,但它抛出了相同的异常

异常(exception)是

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference

发生了什么事?我该如何解决?

我从另一个 AsyncTaskonPostExecute 调用此 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() 为您提供 MainActivity新实例,它不是 当前正在运行的实例强>主要 Activity 。

您应该使用 this@MainActivityapplicationContext 来代替。

1. Toast.makeText(this@MainActivity, "Entry added to date database", Toast.LENGTH_LONG).show()

2. Toast.makeText(applicationContext, "Entry added to date database", Toast.LENGTH_LONG).show()

关于android - 无法在 asyncTask 的 onPostExecute 中 Toast 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60335500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com