我正在尝试制作 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-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);
}
}
请告诉我我做错了什么以及应该做什么。