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

多按钮跳转不同Activity报错求助:已实现单按钮跳转但多按钮遇问题

问题排查与修复方案

我帮你梳理下代码里的几个关键问题,这些应该就是导致报错的核心原因:

1. 方法名大小写错误

在你的OnClickListener实现里,方法名写成了onclick,但Java是严格区分大小写的语言,正确的回调方法名应该是**onClick**(注意大写的字母C)。这个错误会直接导致编译失败,因为系统找不到符合规范的点击回调方法。

2. 上下文引用错误

创建Intent时你用了this,但在匿名内部类new View.OnClickListener()的作用域里,this指代的是这个OnClickListener实例,而非HomeScreen Activity的上下文。正确的写法应该用HomeScreen.this来明确指定Activity的上下文对象:

Intent aspirinIntent = new Intent(HomeScreen.this, AspirinActivity.class);

3. 类名规范与Activity注册问题

  • Java类名的命名规范是首字母大写,所以你的aspirin类应该改成AspirinActivity(或其他符合规范的名称),这不仅是编码规范要求,也能避免潜在的命名冲突。
  • 务必记得在AndroidManifest.xml里注册这个新的Activity,否则运行时会抛出ActivityNotFoundException。注册代码示例如下:
<activity android:name=".AspirinActivity" />

修复后的完整代码片段

package com.example.poweruser.fcemsandroid;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class HomeScreen extends AppCompatActivity {
    public static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_screen);
        Button b1 = (Button) findViewById(R.id.protocolbutton);
        Button b2 = (Button) findViewById(R.id.asabutton);
        b2.setOnClickListener(new View.OnClickListener () {
            // 修正方法名大小写
            public void onClick(View view) {
                // 修正上下文引用,同时规范类名
                Intent aspirinIntent = new Intent(HomeScreen.this, AspirinActivity.class);
                startActivity(aspirinIntent);
            }
        });
    }
}

你可以按照这几点修改代码后重新编译运行,应该就能解决报错问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:23:45