【问题标题】:Studio shows an error when I try to startActivity() from Recycler View Adapter当我尝试从 Recycler View Adapter 启动活动()时,Studio 显示错误
【发布时间】:2019-01-10 15:14:19
【问题描述】:

构建我的第一个应用程序并遇到我无法弄清楚的错误。我有一个显示卡片列表的回收站视图。我想点击卡片并打开另一个活动。

这是我的代码:

import android.content.Context
import android.content.Intent
import android.support.v4.content.ContextCompat.startActivity
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import kotlinx.android.synthetic.main.list_tank_item.view.*

class TankAdapter(val context: Context, val tanks: List<Tank>) : RecyclerView.Adapter<TankAdapter.ViewHolder>() {
    override fun onCreateViewHolder(parent: ViewGroup, p1: Int): ViewHolder {
        val view = LayoutInflater.from(context).inflate(R.layout.list_tank_item, parent, false)
        return ViewHolder(view)
    }

    override fun getItemCount(): Int {
        return tanks.size
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val tank = tanks[position]
        holder.setData(tank, position)
    }

    inner class ViewHolder(itemview: View) : RecyclerView.ViewHolder(itemview) {
        var currentTank: Tank? = null
        var currentPosition: Int = 0

        init {
            itemView.setOnClickListener{
                val intent = Intent(context, TankOverviewActivity::class.java)
                var tank_id = currentTank._id.toString()
                intent.putExtra("tank_id", tank_id)
                startActivity(intent)
            }

            itemView.imgEdit.setOnClickListener{
                Toast.makeText(context, currentTank!!.tank_name + " Edit button clicked!", Toast.LENGTH_LONG).show()
            }
        }
        fun setData(tank: Tank?, position: Int) {
            itemView.txvTankName.text = tank!!.tank_name
            itemView.txvTankCapacity.text = tank!!.tank_capacity
            itemView.txvTankType.text = tank!!.tank_type

            this.currentTank = tank
            this.currentPosition = position
        }
    }
}

这里是 android studio 的屏幕: Android Studio problem

我做错了什么?

【问题讨论】:

  • 似乎 AndroidStudio 将intent 突出显示为导致错误的原因

标签: android-studio android-activity android-recyclerview kotlin


【解决方案1】:

如下尝试

import ...

//use your context as member of your class put private as modifier
class TankAdapter(private val context: Context, val tanks: List<Tank>) : RecyclerView.Adapter<TankAdapter.ViewHolder>() {

    ...

    inner class ViewHolder(itemview: View) : RecyclerView.ViewHolder(itemview) {

        ...

        init {
            itemView.setOnClickListener {

                ...

                //call startActivity from context
                context.startActivity(intent)
            }

            ...

        }

        ...

    }
}

【讨论】:

  • 解决了错误,但我仍然无法构建应用程序 :( 构建时 java 错误:pastebin.com/Qcs28pCb
  • 不客气! ;-) 将其作为正确答案并创建另一个问题。我们又去帮你了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 2021-12-22
相关资源
最近更新 更多