Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android studio Studio在尝试从回收器视图适配器启动Tactivity()时显示错误_Android Studio_Android Activity_Android Recyclerview_Kotlin - Fatal编程技术网

Android studio Studio在尝试从回收器视图适配器启动Tactivity()时显示错误

Android studio Studio在尝试从回收器视图适配器启动Tactivity()时显示错误,android-studio,android-activity,android-recyclerview,kotlin,Android Studio,Android Activity,Android Recyclerview,Kotlin,构建我的第一个应用程序时遇到了一个我无法理解的错误。我有一个显示卡片列表的回收器视图。我想单击该卡并打开另一个活动 这是我的密码: import android.content.Context import android.content.Intent import android.support.v4.content.ContextCompat.startActivity import android.support.v7.widget.RecyclerView import android.

构建我的第一个应用程序时遇到了一个我无法理解的错误。我有一个显示卡片列表的回收器视图。我想单击该卡并打开另一个活动

这是我的密码:

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.content.Context
导入android.content.Intent
导入android.support.v4.content.ContextCompat.startActivity
导入android.support.v7.widget.RecyclerView
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入android.widget.Toast
导入kotlinx.android.synthetic.main.list\u tank\u item.view*
类TankAdapter(val-context:context,val-tanks:List):RecyclerView.Adapter(){
override onCreateViewHolder(父级:ViewGroup,p1:Int):ViewHolder{
val view=LAYOUTINGFLATER.from(上下文)。充气(R.layout.list\U tank\U项目,父项,false)
返回视图保持器(视图)
}
重写getItemCount():Int{
回流罐.尺寸
}
覆盖BindViewHolder(holder:ViewHolder,位置:Int){
val油箱=油箱[位置]
支架设置数据(油箱、位置)
}
内部类ViewHolder(itemview:View):RecyclerView.ViewHolder(itemview){
var currentTank:油箱?=空
var currentPosition:Int=0
初始化{
itemView.setOnClickListener{
val intent=intent(上下文,TankOverviewActivity::class.java)
var tank_id=currentTank._id.toString()
意向。额外(“储罐id”,储罐id)
星触觉(意图)
}
itemView.imgEdit.setOnClickListener{
Toast.makeText(上下文,currentTank!!.tank\u name+“单击编辑按钮!”,Toast.LENGTH\u LONG.show()
}
}
fun设置数据(油箱:油箱?,位置:Int){
itemView.txvTankName.text=tank!!.tank\u name
itemView.txvTankCapacity.text=油箱!!.tank\u容量
itemView.txvTankType.text=油箱!!.tank\U类型
此.currentTank=油箱
this.currentPosition=位置
}
}
}
这里是android studio的屏幕:

我做错了什么?

试试下面的方法

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)
            }

            ...

        }

        ...

    }
}
导入。。。
//使用上下文作为类的成员,将private作为修饰符
类TankAdapter(私有val上下文:context,val tanks:List):RecyclerView.Adapter(){
...
内部类ViewHolder(itemview:View):RecyclerView.ViewHolder(itemview){
...
初始化{
itemView.setOnClickListener{
...
//从上下文调用startActivity
上下文。起始触觉(意图)
}
...
}
...
}
}

似乎AndroidStudio强调了
意图
是导致错误的原因,解决了错误,但我仍然无法构建应用程序:(构建时出现java错误:不客气!;-)将其作为正确答案,然后创建另一个问题。我们再去帮你