gpt4 book ai didi

android - startActivity() 与 context.startActivity()

转载 作者:行者123 更新时间:2023-12-05 04:38:43 26 4
gpt4 key购买 nike

我几天前开始进行android开发。我实现了一个 recylerview,在 recyclerview 适配器的 OnBindViewHolder 方法中,我在 recyclerview 项目上使用了 setOnClickListener。我的主要目标是在单击 recyclerview 项目时开始一个新的 Activity ,但是在以下列方式实现我的代码时我遇到了困难:

     override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val clusterItem = datalist[position]
holder.clusterName.setText(clusterItem.name)
holder.clusterStrat.setText(clusterItem.strats)
holder.itemview.setOnClickListener() {
startActivity(Intent(holder.itemview.context,ClusterSearchActivity::class.java))
}
}

我在包含 startActivity 的行上有 3 个错误:

类型不匹配:推断类型是 Intent 但预期是 Context

没有为参数'intent'传递值

没有为参数'options'传递值

在经历了多种解决方案之后,我终于偶然发现了这个:https://www.titanwolf.org/Network/q/08ad14d9-cb9a-4b87-923b-f97089db769a/y

使用 context.startActivity(intent) 我重写了我的代码:

        override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val clusterItem = datalist[position]
holder.clusterName.setText(clusterItem.name)
holder.clusterStrat.setText(clusterItem.strats)
holder.itemview.setOnClickListener() {
holder.itemview.context.startActivity(Intent(holder.itemview.context,ClusterSearchActivity::class.java)) }

}

现在我的代码终于可以工作了,但我似乎无法理解为什么我必须使用 context.startActivity()。我想知道什么时候可以像那样使用 startActivity() 以及什么时候需要使用 context.startActivity()

最佳答案

  1. 首先,Context 是应用程序/对象的当前状态。

  2. 有关应用程序环境的全局信息的接口(interface)。

  3. 这是一个抽象类,其实现由Android系统提供。

  4. 它允许访问特定于应用程序的资源,例如颜色、字符串资源、数据库访问和类,以及对应用程序级操作(例如启动 Activity 、广播和接收 Intent 等)的向上调用。

  5. Context 是 Activity、Service、Application 等的基类如果您检查 AppCompatActivity 和 Fragment 内部。然后你可以在里面找到 startActivity() 方法。

在你的情况下:

在适配器中,如果你需要获取数据库访问权限,字符串资源例如:context.getResources().getString(R.string.yourstring);

需要在运行时在 View 上设置颜色,因此您必须需要应用程序/对象的当前状态是调用上下文并且上下文是父类(super class)。

您可以通过三种方式在适配器中访问上下文。

  1. 将上下文作为参数传递给适配器并将其保留为类字段。

  2. 在你需要的时候使用依赖注入(inject)来注入(inject)上下文。我强烈建议阅读它。例如:Android Hilt。

最后,

  1. 从任何 View 对象获取它。就像你做的一样。holder.itemview.context.

希望对您有所帮助。

关于android - startActivity() 与 context.startActivity(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70541024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com