[英]Checking EditText empty entries and validate it
我正在嘗試制作Android應用程序的注冊表格。 我已經使用MySQLite制作了數據庫適配器等。
我一直面臨的問題是對輸入到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-catch,但是驗證似乎也沒有用。
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);
}
}
請告訴我我做錯了什么以及應該做什么。
首先,您不需要以這種方式聲明final EditText unedit = (EditText) findViewById(R.id.unedit);
您可以在課程級別將其聲明為
private EditText unedit;
現在在onCreate()方法中,使用以下方式進行訪問:
unedit = (EditText) findViewById(R.id.unedit);
並按如下所示檢查字符串變量,
String username = unedit.getText().toString().trim(); // Add Trim() method
if (username.equals("")) {
unedit.setError("Username is required");
// return;
}
其他所有都一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.