我希望当用户在我的应用程序中注册用户名时,如果用户名已被占用,他/她将得到一个表示“用户名已被占用”的敬酒。如何在注册活动中防止重复输入
我已经在我的数据库中包含了UNIQUE约束,它工作正常,但是在活动本身中我想让用户知道他们正在尝试注册的用户名已经存在。
package com.fullfrontalgames.numberfighter;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Register extends Activity {
EditText UsernameReg, PasswordReg, PasswordConfirm, EmailReg;
Button Register;
DBAdapter db;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
// get Instance of Database Adapter
final DBAdapter db = new DBAdapter(this);
db.open();
// Get reference of views.
UsernameReg = (EditText)findViewById(R.id.UsernameReg);
PasswordReg = (EditText)findViewById(R.id.PasswordReg);
EmailReg = (EditText)findViewById(R.id.EmailReg);
PasswordConfirm = (EditText)findViewById(R.id.PasswordConfirm);
Register = (Button)findViewById(R.id.Register);
Register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String Username = UsernameReg.getText().toString();
String Password = PasswordReg.getText().toString();
String PassConfirm = PasswordConfirm.getText().toString();
String Email = EmailReg.getText().toString();
String TakenUsername = db.getData();
// Check if any of the field are vacant.
if (Username.equals("") || Password.equals("") || PassConfirm.equals("")) {
Toast.makeText(getApplicationContext(), "Field Vacant", Toast.LENGTH_LONG)
.show();
return;
}
// Check if both passwords matches
if (!Password.equals(PassConfirm)) {
Toast.makeText(getApplicationContext(), "Password does not match",
Toast.LENGTH_LONG).show();
return;
}
if (Username.equals(TakenUsername))
{
Toast.makeText(getApplicationContext(), "Username Already Taken",
Toast.LENGTH_LONG).show();
return;
} else {
// Save data in database
db.insertPlayer(Username, Password, Email);
Toast.makeText(getApplicationContext(), "Account Successfully Created ",
Toast.LENGTH_LONG).show();
startActivity(new Intent("com.fullfrontalgames.numberfighter.Login"));
}
}
});
}
}
问题出在哪里? – stinepike 2013-04-22 03:01:42
@StinePike使用我试图使用的方法时,我注册一个重复的用户名,它仍然作用于我的else语句重定向到登录活动时,我想第二if语句不去登录活动,并告诉用户用户名已经存在才能生效。我知道我使用的方法不正确(如果(Username.equals(TakenUsername))我发布了这个问题,询问什么才是正确的方法。 – Cranosaur 2013-04-22 03:06:29
chech在数据库中用户名的可用性,I我认为这是更好的解决方案 – stinepike 2013-04-22 03:09:06