科特林——”;android.app.Application不能强制转换为android.app.Activity“;在适配器上

科特林——”;android.app.Application不能强制转换为android.app.Activity“;在适配器上,android,android-activity,kotlin,adapter,Android,Android Activity,Kotlin,Adapter,我试图在选择bottomNavigationView的项目时调用意图: R.id.nova_foto_barra_cartao -> { val intent = CameraView.buildIntent(context.applicationContext, Constants.ULCERS) (context as Activity).startActivityForResult(intent, 0) } 代码写在适配器内部: class Cartao

我试图在选择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>()
class-cartaotipologiaaadapter(private-val-cartoesTipologia:List,private-val-context:context):适配器()

您很可能将应用程序上下文传递到适配器中,然后将其转换为活动。因此,在这里发生碰撞是预期的行为


更安全的做法是提供从适配器到使用位置的自定义回调。这允许您创建适配器,而无需将其行为硬连接到活动。然后您的回调实现可以处理要执行的操作。

在创建
CartaToTipologiaAdapter
实例的代码中,确保将
活动作为
上下文而不是
上下文。applicationContext
传递。如果在“活动”中创建
CartaToTipologiaAdapter
的实例,请将“活动”作为
上下文传递:

val adapter = CartaoTipologiaAdapter(yourList, this@YourActivity)

您必须通过[您当前的活动]。此

请显示创建上下文的代码。看起来您传递的是应用程序的引用,而不是活动。如果需要
activity
,则只需传递
activity
参数即可,如果上下文是活动,则将上下文向下转换为活动就是一种代码转换。getApplicationContext