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

Android开发点击Button无法跳转至其他Activity问题排查

问题根源

点击按钮无响应的核心原因是按钮点击监听器从未完成注册:你把setOnClickListener绑定逻辑嵌套在了sendMessage()方法内部,但该方法在页面加载完成后从未被触发执行,等于按钮自始至终没有绑定任何点击响应逻辑,自然不会触发跳转。
你的Manifest配置和目标Activity代码没有问题,只需要修正MainActivity的点击逻辑即可,以下两种实现二选一即可,不要混用。

修复方案

方案1:配合XML的onClick属性实现

如果你原本打算通过布局里的android:onClick属性绑定点击事件,按以下步骤修改:

  1. 精简MainActivity代码,移除sendMessage方法内多余的监听器绑定逻辑,直接在sendMessage内写跳转逻辑,控件初始化提前放到onCreate里避免重复查找:
public class MainActivity extends AppCompatActivity {
    public static final String EXTRA_MESSAGE = "com.example.learn1.MESSAGE";
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = findViewById(R.id.editText1);
    }

    public void sendMessage(View view) {
        String message = editText.getText().toString();
        Intent intent = new Intent(this, Displaymsgactivity.class);
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
}
  1. 打开activity_main.xml布局,给id为open_activity_button的按钮标签添加onClick属性,和方法名对应:
<Button
    android:id="@+id/open_activity_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="跳转"
    android:onClick="sendMessage"/>

方案2:纯代码绑定监听器

如果你不想在XML里写onClick属性,直接把监听器绑定逻辑放到onCreate生命周期里执行,删除多余的sendMessage方法即可:

public class MainActivity extends AppCompatActivity {
    public static final String EXTRA_MESSAGE = "com.example.learn1.MESSAGE";
    private EditText editText;
    private Button openActivityBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 初始化控件
        editText = findViewById(R.id.editText1);
        openActivityBtn = findViewById(R.id.open_activity_button);
        // 绑定点击监听
        openActivityBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = editText.getText().toString();
                Intent intent = new Intent(MainActivity.this, Displaymsgactivity.class);
                intent.putExtra(EXTRA_MESSAGE, message);
                startActivity(intent);
            }
        });
    }
}

额外优化建议
  • 类名建议遵循Java大驼峰命名规范,Displaymsgactivity可调整为DisplayMsgActivity,修改后同步更新Manifest和Intent里的类名引用即可,不影响当前功能运行,属于代码规范优化。
  • 尽量不要在点击事件触发时反复调用findViewById查找控件,提前在onCreate里初始化好控件引用可以减少不必要的性能开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:22:48