多按钮跳转不同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
相关产品推荐
相关产品推荐

