You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用startActivity(intent)后新Activity无法启动问题求助

问题分析与修复方案

你遇到的新Activity无法启动的问题,主要有几个关键错误需要修正,我帮你一一拆解:

1. Adapter类名冲突(最核心问题)

你自定义的Adapter类名是RecyclerView,这和Android官方的androidx.recyclerview.widget.RecyclerView完全重名了!这会导致在initClareRV()方法中,你创建的其实是原生RecyclerView控件,而不是自己写的Adapter:

// 这里的RecyclerView是原生控件,不是你的自定义Adapter!
RecyclerView adapter = new RecyclerView(this, mNames, mParties, mImageUrls, this);

修复: 把你的Adapter类名改成ClareMembersRecyclerView(从构造函数名称能看出你本来想叫这个),彻底避免类名冲突。

2. ViewHolder未绑定点击事件

你的ViewHolder实现了View.OnClickListener,但没有给任何视图设置点击监听,导致onClick()方法永远不会被触发。需要在ViewHolder构造函数里,给列表项或子控件绑定点击事件。

3. 重复的点击逻辑冗余

你在onBindViewHolder()里给图片设置了点击监听,但既没启动Activity,又和接口的点击逻辑重复,建议统一用接口方式处理点击,保持代码整洁。


修复后的完整代码

1. 修正Adapter类名与点击逻辑(ClareMembersRecyclerView.java)

// 修正类名,避免和原生RecyclerView冲突
public class ClareMembersRecyclerView extends RecyclerView.Adapter<ClareMembersRecyclerView.ViewHolder>{
    private static final String TAG = "ClareMembersRV";
    private ArrayList<String> mNames = new ArrayList<>();
    private ArrayList<String> mParties = new ArrayList<>();
    private ArrayList<String> mImageUrls = new ArrayList<>();
    private Context mContext;
    private OnNoteListener mOnNoteListener;

    public ClareMembersRecyclerView(Context context, ArrayList<String> names, ArrayList<String> parties, ArrayList<String> imageUrls, OnNoteListener onNoteListener){
        mNames = names;
        mParties = parties;
        mImageUrls = imageUrls;
        mContext = context;
        this.mOnNoteListener = onNoteListener;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        Log.d(TAG, "onCreateViewHolder: called.");
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_members_clare, parent, false);
        return new ViewHolder(view, mOnNoteListener);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        Log.d(TAG, "onBindViewHolder: called.");
        Glide.with(mContext)
                .asBitmap()
                .load(mImageUrls.get(position))
                .into(holder.image);
        holder.name.setText(mNames.get(position));
        holder.party.setText(mParties.get(position));
        
        // 移除重复的图片点击逻辑,统一用接口处理
    }

    @Override
    public int getItemCount() {
        return mImageUrls.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        CircleImageView image;
        TextView name;
        TextView party;
        OnNoteListener onNoteListener;

        public ViewHolder(View itemView, OnNoteListener onNoteListener) {
            super(itemView);
            image = itemView.findViewById(R.id.imgClareCircle);
            name = itemView.findViewById(R.id.tvClareName);
            party = itemView.findViewById(R.id.tvClareParty);
            this.onNoteListener = onNoteListener;
            
            // 给整个列表项绑定点击事件,也可以单独给图片/文字控件设置
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            // 调用接口方法,传递当前列表项的位置
            onNoteListener.onNoteClick(getAdapterPosition());
        }
    }

    public interface OnNoteListener{
        void onNoteClick(int position);
    }
}

2. 修正ConstituencyKerry.java中的Adapter初始化

private void initClareRV(){
    LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
    RecyclerView recyclerView = findViewById(R.id.rv_Kerry_Members);
    recyclerView.setLayoutManager(layoutManager);
    // 使用正确的自定义Adapter类名
    ClareMembersRecyclerView adapter = new ClareMembersRecyclerView(this, mNames, mParties, mImageUrls, this);
    recyclerView.setAdapter(adapter);
}

额外检查项

  1. 确保MembersMapDetailed已经在AndroidManifest.xml中注册:
<activity android:name=".MembersMapDetailed" />
  1. 确认传递的Extra数据无空值(你的mNames/mParties/mImageUrls初始化逻辑没问题)。

这样修改后,点击RecyclerView列表项就能正常启动新Activity并传递数据了!

内容的提问来源于stack exchange,提问作者AndroidProButNo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 21:17:50