我正在嘗試製作Android應用程序的註冊表單。我使用MySQLite製作了一個數據庫適配器。檢查EditText空條目並驗證它
我一直面臨的問題是輸入到EditText控件的條目的驗證。 當我點擊註冊按鈕時,信息應該存儲在數據庫中,確保條目不爲空,確認密碼與密碼匹配,最重要的是用戶名尚未使用。我已經嘗試過所有的方法來做到這一點,但它要麼是運行時強制關閉錯誤,要麼是驗證沒有按照我想要的方式工作。
final EditText unedit = (EditText) findViewById(R.id.unedit);
final EditText passedit = (EditText) findViewById(R.id.passedit);
final EditText conpassedit = (EditText) findViewById(R.id.conpassedit);
final EditText nameedit = (EditText) findViewById(R.id.nameedit);
final EditText emailedit = (EditText) findViewById(R.id.emailedit);
final EditText mobedit = (EditText) findViewById(R.id.mobedit);
Button register = (Button) findViewById(R.id.registerbutton);
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String username = unedit.getText().toString();
String password = passedit.getText().toString();
String conpassword = conpassedit.getText().toString();
String name = nameedit.getText().toString();
String email = emailedit.getText().toString();
String mobileno = mobedit.getText().toString();
RegDb reg = new RegDb(Register.this);
reg.open();
String returnedUn = reg.getUn(username);
reg.close();
if (username.isEmpty()) {
unedit.setError("Username is required");
// return;
}
if (password.isEmpty()) {
passedit.setError("Password is required");
// return;
}
if (conpassword.isEmpty()) {
conpassedit.setError("Password confirmation is required");
// return;
}
if (name.isEmpty()) {
nameedit.setError("Name is required");
// return;
}
if (email.isEmpty()) {
emailedit.setError("Email is required");
// return;
}
if (mobileno.isEmpty()) {
mobedit.setError("Mobile No is required");
// return;
}
if (username.equals(returnedUn)) {
unedit.setError("Username is already used");
// return;
}
if (!conpassword.equals(password)) {
passedit.setError("Check your password");
// return;
}
if (!username.isEmpty() && !password.isEmpty()
&& !name.isEmpty() && !email.isEmpty()
&& !mobileno.isEmpty() && conpassword.equals(password)
&& !username.equals(returnedUn)) {
Dialog d = new Dialog(v.getContext());
d.setTitle("Account created.");
d.show();
} else {
return;
}
我也使用了try-catch-finally,但驗證似乎無法工作。
boolean created = true;
try {
if (!username.isEmpty() && !password.isEmpty()
&& !name.isEmpty() && !email.isEmpty()
&& !mobileno.isEmpty() && conpassword.equals(password)
&& !username.equals(returnedUn)){
RegDb entry = new RegDb(Register.this);
entry.open();
entry.createEntry(username, password, name, email,
mobileno);
entry.close();
}
} catch (Exception e) {
created=false;
Dialog d = new Dialog(v.getContext());
d.setTitle("Please check your entries.");
d.show();
} finally {
if (created) {
Dialog d = new Dialog(v.getContext());
d.setTitle("Account created.");
Intent i = new Intent(v.getContext(),
MainActivity.class);
startActivity(i);
}
}
請賜教我我做錯了什麼,應該做什麼。
http://stackoverflow.com/questions/6290531/check-if-edittext-is-empty –