【问题标题】:Add a Intent in a class在类中添加 Intent
【发布时间】:2020-08-06 03:11:32
【问题描述】:

我需要启动一个新活动以全屏显示图像,并且我的 Intent 在一个类中但在我的主类之外。

class PhotoItem(val user: String, val send: String, val timestamp: Long, val country: String): Item<GroupieViewHolder>(){

override fun bind(viewHolder: GroupieViewHolder, position: kotlin.Int) {


    viewHolder.itemView.textView10.text = user
    viewHolder.itemView.textView13.text = timestamp.toString()
    viewHolder.itemView.textView14.text = country
    val uri = send
    val targetImageView = viewHolder.itemView.selectphoto_imageview
    val targetImageViewFullScreen = viewHolder.itemView.fullscreen
    Picasso.get().load(uri).into(targetImageView)
    viewHolder.itemView.setOnClickListener{v : View ->

        v.getContext().startActivity(Intent(v.getContext(), FullscreenPhoto::class.java))


    }

}
override fun getLayout(): kotlin.Int {
    return R.layout.photo_from_row


}
}

所以我找到了这一行:v.getContext().startActivity(Intent(v.getContext(), FullscreenPhoto::class.java)),因为我无法创建基本 Intent:val intent = Intent(this,Home::class.java)startActivity(intent)

我需要 val uri 来将图像加载到我的图像视图中

提前谢谢你。

【问题讨论】:

  • 您遇到了什么问题?

标签: java android kotlin picasso


【解决方案1】:

我想问题是startActivityPhotoItem 中不可用

因此更改GroupieViewHolder 类并在构造函数中添加活动,如下所示:

class GroupieViewHolder(val activity: Activity, /* other arguments */)

现在在PhotoItembind 中使用该字段,如下所示:

override fun bind(viewHolder: GroupieViewHolder, position: kotlin.Int) {


    // other codes.........

    viewHolder.itemView.setOnClickListener{v : View ->

        // using activity field for startActivity
        viewHolder.activity.startActivity(Intent(v.getContext(), FullscreenPhoto::class.java))

    }

【讨论】:

  • 谢谢,我没有在GroupieViewHolder 中添加val activity : Activity,而是在PhotoItem 中添加了this@Main,用于我在其他乐趣中使用课堂时的活动
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多