點擊驗證碼校驗按鈕後,startActivity(intent) 導致 App 停止運行。
<uses-permission android:name="android.permission.INTERNET" />
if (TextUtils.isEmpty(mCode)) {
Toast.makeText(this, "請輸入驗證碼", Toast.LENGTH_SHORT).show();
return;
}
registerListener()、createDialog()),避免匿名內部類過度嵌套。Handler、runOnUiThread 或 RxJava/Kotlin 協程。createDialog(title, msg) 方法,減少重複代碼。public class RegisterPhoneActivity extends Activity {
private EditText etPhone, etCode;
private Button btnGetCode, btnNext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register_phone);
findViews();
registerListeners();
}
private void findViews() { ... }
private void registerListeners() {
btnNext.setOnClickListener(v -> verifyCode());
btnGetCode.setOnClickListener(v -> requestCode());
}
private void verifyCode() {
String code = etCode.getText().toString().trim();
if (TextUtils.isEmpty(code)) { showToast("請輸入驗證碼"); return; }
if (code.equals(DataShare.getCode())) {
startActivity(new Intent(this, RegisterUserActivity.class));
} else {
showDialog("驗證碼錯誤", "請檢查輸入");
}
}
private void requestCode() {
String phone = etPhone.getText().toString().trim();
if (!isValidPhone(phone)) { showDialog("手機號錯誤", "格式不正確"); return; }
DataShare.setPhone(phone);
// 子線程網絡請求...
}
// 輔助方法...
}
F6 單步跟蹤。AndroidRuntime 獲取異常堆棧。