我在android中设计了一个登录表单,其中包含员工ID(整数值)和密码。但即使我输入确切的凭据,它也不会转移到下一个活动。它还在logcat中打印正确的empid。但始终显示最后的Toast消息。
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.login_activity);
submit = (Button) findViewById(R.id.submit);
empId_edt = (EditText) findViewById(R.id.emp_id);
password_edt = (EditText) findViewById(R.id.password);
submit.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
empid = Integer.parseInt(empId_edt.getText().toString().trim());
System.out.println(empid);
password = password_edt.getText().toString().trim();
if(empid != null && empid>=10000 && empid<=10130)
{
if(password != null && password.length() > 0)
{
if(empid == 10001 && password == "hrms")
{
Intent intent = new Intent(LoginActivity.this, HomeScreenActivity.class);
startActivity(intent);
}
else
{
Toast.makeText(LoginActivity.this, "Please enter valid Employee Id & Password", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(LoginActivity.this, "Please enter a valid password", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(LoginActivity.this, "Please enter a valid Employee Id", Toast.LENGTH_SHORT).show();
}
}
});
}
答案 0 :(得分:4)
使用password.equals(“hrms”)代替密码==“hrms”。
无法将字符串与“=”符号进行比较。您需要使用内置方法对String
进行相等性检查答案 1 :(得分:1)
变量empid
应为整数。您无法将其检查为空(您可以将其检查为0)。相反,您可以检查empId_edt.getText()
是否为null(您应该在解析为整数之前执行此操作)。是的,你应该在try-catch
左右Integer.parseInt()
。并将字符串与.equals()
而不是==
进行比较。这些东西应该修复你的代码。感谢评论和另一个答案。
答案 2 :(得分:0)
这给出了你的问题的答案** JVM正在缓存整数值。 ==仅适用于介于-128和127之间的数字**
所以请使用if(empid.intValue()== 10001)