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

ListView按钮启动新Activity遇错:无法解析Intent构造方法与startActivity

解决ListView中按钮点击启动Activity的错误问题

看起来你遇到的两个错误都是因为上下文(Context)使用不当导致的,我来一步步帮你解决:

错误原因分析

  1. Cannot Resolve constructor intent:Intent的第一个参数需要传入一个Context类型的对象,但你用了MyListAdapter.this——这是Adapter的实例,不是Context,所以系统找不到对应的构造方法。
  2. cannot resolve method startactivity:startActivity()是Context类的方法,你的Adapter本身没有这个方法,直接调用肯定会报错。

正确的实现步骤

1. 确保Adapter持有Context引用

首先在你的Adapter构造方法里传入并保存Context,这样后续可以直接使用:

public class MyListAdapter extends BaseAdapter {
    private Context mContext;
    // 你的其他数据集合等成员变量

    // 构造方法接收Context
    public MyListAdapter(Context context) {
        this.mContext = context;
    }

    // 重写getView等方法...
}

当你在Activity中创建Adapter时,传入Activity的上下文(比如this):

MyListAdapter adapter = new MyListAdapter(MainActivity.this);
listView.setAdapter(adapter);

2. 在按钮点击事件中正确创建Intent并启动Activity

在getView方法里给按钮设置点击事件时,用保存的Context或者从View获取Context来创建Intent并启动:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // 初始化布局、控件等逻辑...
    Button button = convertView.findViewById(R.id.your_button_id);
    
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // 方式一:使用Adapter持有的Context
            Intent intent = new Intent(mContext, Login.class);
            mContext.startActivity(intent);

            // 方式二:也可以直接从点击的View获取Context
            // Intent intent = new Intent(v.getContext(), Login.class);
            // v.getContext().startActivity(intent);
        }
    });

    return convertView;
}

3. 额外检查:确认LoginActivity已在Manifest中注册

别忘了在AndroidManifest.xml里注册你的LoginActivity,否则即使代码正确也会启动失败:

<application ...>
    <!-- 你的其他Activity -->
    <activity android:name=".Login" />
</application>

这样修改后,你的按钮点击就能正常启动LoginActivity啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:55:40