Kotlin - "android.app.Application cannot be cast to android.app.Activity" 在适配器上
Kotlin - "android.app.Application cannot be cast to android.app.Activity" on an Adapter
我试图在 select bottomNavigationView 的项目时调用意图:
R.id.nova_foto_barra_cartao -> {
val intent = CameraView.buildIntent(context.applicationContext, Constants.ULCERS)
(context as Activity).startActivityForResult(intent, 0)
}
代码写在适配器内部:
class CartaoTipologiaAdapter(private val cartoesTipologia: List<CartaoTipologia>, private val context: Context) : Adapter<CartaoTipologiaAdapter.ViewHolder>()
您很可能将应用程序上下文传递到适配器,然后将其转换为 Activity。所以这里发生崩溃是预期的行为。
从您的适配器向使用它的地方提供自定义回调会更安全。这使您可以创建适配器,而无需将其行为硬连接到 activity。然后您的回调实现可以处理要执行的操作。
在创建 CartaoTipologiaAdapter
实例的代码中,确保将 Activity
作为 context
而不是 context.applicationContext
传递。如果您在 activity 中创建 CartaoTipologiaAdapter
的实例,请将 activity 作为 context
:
传递
val adapter = CartaoTipologiaAdapter(yourList, this@YourActivity)
你必须通过[你现在的Activity].这个
我试图在 select bottomNavigationView 的项目时调用意图:
R.id.nova_foto_barra_cartao -> {
val intent = CameraView.buildIntent(context.applicationContext, Constants.ULCERS)
(context as Activity).startActivityForResult(intent, 0)
}
代码写在适配器内部:
class CartaoTipologiaAdapter(private val cartoesTipologia: List<CartaoTipologia>, private val context: Context) : Adapter<CartaoTipologiaAdapter.ViewHolder>()
您很可能将应用程序上下文传递到适配器,然后将其转换为 Activity。所以这里发生崩溃是预期的行为。
从您的适配器向使用它的地方提供自定义回调会更安全。这使您可以创建适配器,而无需将其行为硬连接到 activity。然后您的回调实现可以处理要执行的操作。
在创建 CartaoTipologiaAdapter
实例的代码中,确保将 Activity
作为 context
而不是 context.applicationContext
传递。如果您在 activity 中创建 CartaoTipologiaAdapter
的实例,请将 activity 作为 context
:
val adapter = CartaoTipologiaAdapter(yourList, this@YourActivity)
你必须通过[你现在的Activity].这个