即使我插入正确的凭据,登录ID也无效

时间:2015-01-16 06:50:55

标签: android

我在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();
            }
        }
    });
}

3 个答案:

答案 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)

Android two integers with same value not equating properly