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

Android Studio按钮点击无响应 无法跳转至其他Activity问题求助

问题根因及修复方案

现有代码常见问题

你当前贴出的代码核心隐患如下:

  1. 目标Activity未注册:跳转逻辑指向SignUp.class,如果该Activity没有在AndroidManifest.xml中注册,点击后会直接触发崩溃,这是你描述中配置onClick后崩溃的高频原因。
  2. 若你配置XMLandroid:onClick属性后崩溃,通常是两个写法错误:
    • 自定义触发函数不是public修饰,或者未携带唯一的View类型入参
    • 该布局绑定在Fragment中,android:onClick属性只会检索宿主Activity中的同名方法,找不到就会抛出异常
  3. 若完全无响应无崩溃,检查是否有其他透明控件覆盖在按钮上方,或者按钮的父布局设置了android:clickable="true"消费了点击事件,导致按钮无法接收到点击回调。

修复步骤

  1. 注册SignUp Activity
    打开AndroidManifest.xml,添加如下声明:
<activity
    android:name=".SignUp"
    android:exported="false" />

如果该Activity需要被外部应用调用,将exported属性改为true即可。

  1. 优化点击事件写法(可选)
    你当前使用的控件是AppCompatButton,属于Button的子类,正常强转不会报错,如果你要避免类型转换风险,可以直接修改代码为:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    AppCompatButton button = findViewById(R.id.signup_btn);
    button.setOnClickListener(view -> {
        Intent i = new Intent(Login.this, SignUp.class);
        startActivity(i);
    });
}
  1. XML onClick属性正确写法(如果要使用该方案)
    首先给XML按钮控件添加属性:
android:onClick="jumpToSignUp"

然后在Login Activity中添加同名公共方法:

public void jumpToSignUp(View view) {
    Intent i = new Intent(Login.this, SignUp.class);
    startActivity(i);
}

注意:方法必须是public修饰,必须携带且仅携带一个View类型参数,方法名和XML中配置的完全一致,且该方法只能写在布局绑定的宿主Activity中,不能写在Fragment里


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:09:04