当前位置: 首页 > 知识库问答 >
问题:

按项目[复制]时打开新活动

柳仲卿
2023-03-14

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

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

这是我的MainActivity2:

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
}

这是我的日志:

   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'

共有1个答案

乌学博
2023-03-14

你还没有发布错误,但我想这是因为

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

“this”并没有像应该的那样引用活动或上下文,Kotlin视图有一个Context属性,所以请尝试

            val intent = Intent(imageView.context, MainActivity2::class.java)

编辑:第二行:

            imageView.context.startActivity(intent)
 类似资料:
  • 我合并了一个水平幻灯片导航组件(这需要使类扩展片段)。滑动部分工作正常。这里我有相应的<code>onClick() 到目前为止,我的代码还不多,所以我不会用相关的布局部分来混淆我的问题。任何帮助都是非常感谢的。 片段#1的Java代码 public class TasksFragment扩展Fragment { @ Override public View oncreate View(layou

  • 我是全新的,我唯一的编程经验是PLC; s和HMI的,所以我很抱歉不能弄清楚什么可能是一个简单的任务。但是我找不到任何CURRENT视频或工作示例,说明如何简单地将图像放置在主活动上,并在按下后打开另一个活动。我正在使用最新版本的Android Studio11.0,并试图学习静态编程语言。我已经附上了我到目前为止的项目代码,正如你所看到的,我刚刚开始这个项目。提前感谢您的任何帮助。 Java文件

  • 主要内容:Eclipse 重新打开关闭的项目Eclipse 重新打开关闭的项目 要重新打开一个关闭的项目,在 Package Explorer 视图中,选择关闭的项目并单击 Project 菜单并选择 Open Project。 项目打开后,可以使用 Eclipse 用户界面编辑其内容。

  • 构建Java项目 项目可以有零个或多个与之关联的构建器。 java项目与java构建器关联。 要查看与项目关联的构建器 - 在Package Explorer视图中,右键单击项目,然后选择Properties。 在左侧树中单击“构建器”。 它是java构建器,它将Java项目与其他类型的项目区分开来。 通过单击New按钮,您可以将Ant构建器与java项目相关联。 java构建器负责编译java源

  • 重新开放一个封闭的项目 要重新打开已关闭的项目,请在Package Explorer视图中选择已关闭的项目,然后单击Project菜单并选择Open Project。 项目打开后,可以使用Eclipse用户界面编辑其内容。