Android Studio按钮点击无响应 无法跳转至其他Activity问题求助
问题根因及修复方案
现有代码常见问题
你当前贴出的代码核心隐患如下:
- 目标Activity未注册:跳转逻辑指向
SignUp.class,如果该Activity没有在AndroidManifest.xml中注册,点击后会直接触发崩溃,这是你描述中配置onClick后崩溃的高频原因。 - 若你配置XML
android:onClick属性后崩溃,通常是两个写法错误:- 自定义触发函数不是
public修饰,或者未携带唯一的View类型入参 - 该布局绑定在Fragment中,
android:onClick属性只会检索宿主Activity中的同名方法,找不到就会抛出异常
- 自定义触发函数不是
- 若完全无响应无崩溃,检查是否有其他透明控件覆盖在按钮上方,或者按钮的父布局设置了
android:clickable="true"消费了点击事件,导致按钮无法接收到点击回调。
修复步骤
- 注册SignUp Activity
打开AndroidManifest.xml,添加如下声明:
<activity android:name=".SignUp" android:exported="false" />
如果该Activity需要被外部应用调用,将exported属性改为true即可。
- 优化点击事件写法(可选)
你当前使用的控件是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); }); }
- 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
相关产品推荐
相关产品推荐

