Android点击CardView跳转指定Activity失效,仅弹出Toast如何解决
问题根因
你为同一个item视图重复调用了两次setOnClickListener方法,后设置的点击事件会直接覆盖之前的配置,因此只有弹出Toast的逻辑生效,跳转Activity的逻辑被覆盖后不会执行。
修复实现
将两次点击逻辑合并,同时根据卡片位置判断跳转的目标Activity即可,修改后的instantiateItem方法代码如下:
override fun instantiateItem(container: ViewGroup, position: Int): Any { //inflate layout card_item.xml val view = LayoutInflater.from(context).inflate(R.layout.card_item, container, false) //get data val model = myModelArrayList.get(position) val title = model.title val description = model.description val date = model.date val image = model.image //set data to ui views view.bannerIv.setImageResource(image) view.titleTv.text = title view.descriptionTv.text = description view.dateTv.text = date // 合并到同一个点击事件回调 view.setOnClickListener { // 先弹出你需要的Toast提示 Toast.makeText(context,"$title \n $description \n $date", Toast.LENGTH_SHORT).show() // 根据卡片位置判断跳转目标 val targetActivity = when(position) { 0 -> Activity1::class.java 1 -> Activity2::class.java // 后续对应卡片依次添加配置即可 else -> SecondActivity::class.java // 默认跳转页 } val intent = Intent(context, targetActivity) context.startActivity(intent) } //add view to container container.addView(view, position) return view }
注意事项
- 所有要跳转的Activity都需要提前在
AndroidManifest.xml中完成注册,否则会触发崩溃 - 如果跳转时需要携带参数,可以在
Intent创建后调用putExtra方法传入对应数据即可
内容的提问来源于stack exchange,提问作者Charlie Brown
相关产品推荐
相关产品推荐

