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

RecyclerView适配器类中使用Intent跳转Activity报错求助

搞定RecyclerView Adapter里的Activity跳转错误!

嘿,我来帮你解决这两个跳转时遇到的问题,咱们逐个拆解:

第一个错误:"PakistaniActivity不是封闭类"

这个问题大概率是你在Adapter里想直接用PakistaniActivity.this当Intent的上下文,但你的Adapter要么是独立的类,要么是PakistaniActivity里的非静态内部类——这两种情况都没法直接拿到PakistaniActivity.this哦。

修复办法:
给你的Adapter加个构造方法,把PakistaniActivity的上下文传进去,之后用这个传入的上下文来创建Intent就行。

第二个错误:"无法解析方法StatrActivity()"

哈哈,这就是个拼写小失误!正确的方法名是startActivity()(首字母是小写的s,你写成大写S还拼错了字母顺序),而且要注意:Adapter本身没有这个方法,必须通过咱们刚才传入的Context对象来调用它。

给你贴个完整的正确代码示例

先看PakistaniActivity的代码:

package com.recycler.hp.navigationbar;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

public class PakistaniActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pakistani);

        RecyclerView recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        // 把当前Activity的上下文传给Adapter
        MyAdapter adapter = new MyAdapter(this);
        recyclerView.setAdapter(adapter);
    }
}

再看Adapter的代码(假设是独立类):

package com.recycler.hp.navigationbar;

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

    private Context mContext;

    // 构造方法接收上下文
    public MyAdapter(Context context) {
        this.mContext = context;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.item_layout, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        // 设置列表项的点击跳转事件
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 用传入的上下文创建Intent,替换成你要跳转的目标Activity
                Intent intent = new Intent(mContext, YourTargetActivity.class);
                // 注意这里是mContext调用startActivity,拼写一定要对!
                mContext.startActivity(intent);
            }
        });
    }

    @Override
    public int getItemCount() {
        return 10; // 这里改成你实际的列表项数量
    }

    public static class MyViewHolder extends RecyclerView.ViewHolder {
        TextView textView;

        public MyViewHolder(View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.textView);
        }
    }
}

最后别忘了一个重要细节!

你要跳转的目标Activity,必须在AndroidManifest.xml里注册哦,不然会跳不动还报错:

<activity android:name=".YourTargetActivity"/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:37:39