我正在创建一个Android应用程序,它只允许用户创建一个帐户,并在该帐户存在时使用该帐户名和密码登录页面。我相信我的程序一直工作到登录点。该方法实际运行但if-else没有正确执行。感谢任何帮助,谢谢。
登录方式:
ArrayList<User> users = new ArrayList<>(); // already contains info
public void login(View view){
// EditText where user enters the username
EditText userText = (EditText) view.findViewById(R.id.username);
// EditText where user enters the password
EditText passText = (EditText) view.findViewById(R.id.password);
for (int i = 0;i<users.size();i++) {
String p = passText.getText().toString(); //password string
String n = userText.getText().toString(); //username string
// checks if names of the are equal
boolean name = (n.equals(users.get(i).getName()));
// checks if passwords of the are equal
boolean pass = (p.equals(users.get(i).getPassword()));
if (name && pass) {
Toast toast = Toast.makeText(getApplicationContext(), "Login Successful!", Toast.LENGTH_LONG);
toast.show();
intent = new Intent(MainActivity.this, EnteredPage.class);
startActivity(intent);
break;
}
if (i == users.size() - 1) { //if this is the last User object
Toast toast = Toast.makeText(getApplicationContext(), "User does not exist!", Toast.LENGTH_LONG);
toast.show();
}
}
}
答案 0 :(得分:0)
问题是第一行。 ArrayList<User> users = new ArrayList<>();
当你这样说时,arraylist会重置并且不包含任何值。将删除所有用户名和密码。您可以将用户名和密码存储在sqlite数据库中。然后在登录时,检查用户是否存在于数据库中。无需检索arraylist并与其值进行比较。
建议:用户身份验证应通过服务器完成,而不是在应用程序本地完成
答案 1 :(得分:0)
{{1}}
试试吧!
答案 2 :(得分:0)
我建议您通过调试代码或使用日志来检查变量中的数据。这样你就可以确切地指出你正在寻找的数据是否确实存在的确切原因。
此外,您可能需要将.equals更改为.equalsIgnoreCase以获取用户名。在这种情况下,将忽略区分大小写的数据。