Android Studio项目中按钮点击无响应如何排查解决
Android按钮点击无响应问题排查修复方案
必查项1:按钮控件初始化验证
你需要在Activity的onCreate方法中,调用setContentView后完成按钮控件的绑定,否则Bdateofbirth变量为null,点击判断逻辑永远不会触发:
// signup Activity的onCreate方法内添加 Bdateofbirth = findViewById(R.id.Bdateofbirth);
必查项2:点击事件绑定验证
两种绑定方式任选其一即可:
- XML属性绑定:在Button的XML标签中新增onClick属性
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/Bdateofbirth" android:text="Date of birth" android:gravity="center" android:layout_gravity="center" <!-- 新增这一行 --> android:onClick="onClick" /> - 代码动态绑定:在初始化按钮后添加监听器绑定逻辑
// 需保证当前Activity实现了View.OnClickListener接口 Bdateofbirth.setOnClickListener(this);
必查项3:DatePickerDialog参数错误修复
你当前代码中DatePickerDialog构造方法的最后三个参数顺序错误,官方要求参数顺序为「年、月、日」,你传入的是「日、月、年」,不仅会导致日期选择器初始值错误,极端情况会触发崩溃,修正后的dialogDOB代码如下:
private void dialogDOB(){ Calendar calendar = Calendar.getInstance(); int d = calendar.get(Calendar.DAY_OF_MONTH); int m = calendar.get(Calendar.MONTH); int y = calendar.get(Calendar.YEAR); // 最后三个参数顺序从d,m/y改为y,m,d DatePickerDialog datePickerDialog = new DatePickerDialog(signup.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker datePicker, int i, int i1, int i2) { i1=i1+1; String date = i + "/" + i1 + "/" + i2; Toast.makeText(signup.this, date, Toast.LENGTH_SHORT).show(); Bdateofbirth.setText(date); } }, y, m, d); datePickerDialog.show(); }
优化项(可选)
建议将点击判断逻辑改为通过id匹配,避免对象引用不一致导致判断失效:
@Override public void onClick(View view) { if (view.getId() == R.id.Bdateofbirth) { dialogDOB(); } }
内容的提问来源于stack exchange,提问作者someone
相关产品推荐
相关产品推荐

