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].这个