Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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 按项目时打开新活动_Android_Kotlin - Fatal编程技术网

Android 按项目时打开新活动

Android 按项目时打开新活动,android,kotlin,Android,Kotlin,我在MainActivity中有一个显示类别列表的片段,我想在用户单击分类项目时添加一个选项,一个新的活动应该启动(MainActivity2),其中包含一个显示文章列表的片段 问题是,当我使用打开活动的方法Intent时,我会出现多个错误 这是我的主要活动2: package com.mbds.news import android.content.Intent import android.os.Bundle import com.google.android.material.float

我在
MainActivity
中有一个显示类别列表的片段,我想在用户单击分类项目时添加一个选项,一个新的活动应该启动(
MainActivity2
),其中包含一个显示文章列表的片段

问题是,当我使用打开活动的方法
Intent
时,我会出现多个错误

这是我的主要活动2:

package com.mbds.news

import android.content.Intent
import android.os.Bundle
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.snackbar.Snackbar
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import com.mbds.news.fragments.ArticlesFragment
import com.mbds.news.fragments.CategoriesFragement

class MainActivity2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)

        changeFragment(ArticlesFragment())
    }
}

/**
 * Ajouter le fragmet [ComputationFragment] dans l'activité
 */
fun MainActivity2.changeFragment(fragment: Fragment) {
    supportFragmentManager.beginTransaction().apply {
        //3) on remplace le contenu du container
        replace(R.id.fragment_container, fragment)
        //4) on ajoute la transaction dans la backstack
        addToBackStack(null)
    }.commit()
    // 5) on commit la transaction
}
以下是我放置重定向的位置:

class  CategoriAdapter(private val dataset: List<Category>) :
    RecyclerView.Adapter<CategoriAdapter.ViewHolder>() {

    class ViewHolder(val root: View) : RecyclerView.ViewHolder(root) {


        fun bind(item:Category ) {
            var txtname = root.findViewById<TextView>(R.id.category_name)
            val imageView = root.findViewById<ImageView>(R.id.category_image)

            imageView.setOnClickListener {

                val intent = Intent(this, MainActivity2::class.java)
                startActivity(intent)
            }

            txtname.text = item.name

            Glide
                .with(root)
                .load(item.image)
                .centerInside()
                .placeholder(R.drawable.placeholder)
                .into(imageView);
        }
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val rootView = LayoutInflater.from(parent.context)
            .inflate(R.layout.list_item, parent, false)
        return ViewHolder(rootView)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.bind(dataset[position])
    }
    override fun getItemCount(): Int = dataset.size
}
类分类适配器(私有val数据集:列表):
RecyclerView.Adapter(){
类ViewHolder(val根:视图):RecyclerView.ViewHolder(根){
趣味绑定(项目:类别){
var txtname=root.findviewbyd(R.id.category\u name)
val imageView=root.findviewbyd(R.id.category\u图像)
imageView.setOnClickListener{
val intent=intent(这是MainActivity2::class.java)
星触觉(意图)
}
txtname.text=item.name
滑翔
.with(root)
.load(项目.图像)
.centerInside()
.placeholder(R.drawable.placeholder)
.进入(图像视图);
}
}
override onCreateViewHolder(父级:ViewGroup,viewType:Int):ViewHolder{
val rootView=LayoutInflater.from(parent.context)
.充气(R.layout.list_项,父项,假)
返回视图保持器(rootView)
}
覆盖BindViewHolder(holder:ViewHolder,位置:Int){
holder.bind(数据集[位置])
}
重写getItemCount():Int=dataset.size
}
这是我的日志:

   None of the following functions can be called with the arguments supplied:
    public constructor Intent(p0: Context!, p1: Class<*>!) defined in android.content.Intent
    public constructor Intent(p0: String!, p1: Uri!) defined in android.content.Intent

No value passed for parameter 'p1'
No value passed for parameter 'p2'
使用提供的参数无法调用以下函数:
在android.content.Intent中定义的公共构造函数Intent(p0:Context!,p1:Class!)
在android.content.Intent中定义的公共构造函数Intent(p0:String!,p1:Uri!)
没有为参数“p1”传递值
没有为参数“p2”传递值

您尚未发布错误,但我认为这是因为

            val intent = Intent(this, MainActivity2::class.java)
            startActivity(intent)
“this”并没有像应该的那样引用活动或上下文,Kotlin视图有一个Context属性,所以请尝试

            val intent = Intent(imageView.context, MainActivity2::class.java)
编辑:第二行:

            imageView.context.startActivity(intent)

你也应该考虑添加错误(日志),这样我们就可以看到到底出了什么问题。@ CYB3RKO是的,你是对的,谢谢。我只是谢谢你的评论,当我做你提议的时候,我仍然有错误,我有类型不匹配。需要:上下文发现:抱歉抱歉忘了东西,看到了。update@zak92你在哪一行得到错误?