2013-03-11 299 views
0

我的活动这是一个简单的登录活动,其中(仅用于测试)如果用户名为& &密码相等,则返回true,否则返回false。textPersonName和textPassword之间的比较

但它总是返回false。

不是我就算转换toString();例如:

String a=(txtUserName.getText().toString() == txtPassword.getText().toString()) ? "equal" : "Nequal"; 

全码:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    txtUserName = (EditText) this.findViewById(R.id.txtUname); 
    txtPassword = (EditText) this.findViewById(R.id.txtPwd); 
    btnLogin = (Button) this.findViewById(R.id.btnLogin); 
    btnLogin.setOnClickListener(new OnClickListener() { 
    @Override 


     public void onClick(View v) { 
     Toast.makeText(LoginActivity.this,txtUserName.getText(),Toast.LENGTH_LONG).show(); 
     Toast.makeText(LoginActivity.this,"Just for separate", Toast.LENGTH_LONG).show(); 
     Toast.makeText(LoginActivity.this,txtPassword.getText(), Toast.LENGTH_LONG).show(); 

     String a=(txtUserName.getText() == txtPassword.getText()) ? "equal" : "Nequal"; 

     Toast.makeText(LoginActivity.this, a, Toast.LENGTH_LONG).show(); 

    } 

    }); 
} 
+0

您正在使用==来比较指针和比较内容的.equals()。 – 2013-03-11 18:29:03

回答

5

使用

String a=(txtUserName.getText().toString().equals(txtPassword.getText().toString())) 

你正在做不等同字符串的方式相反,它们等同字符串对象。 始终使用String.equals()方法进行字符串比较。

Java String.equals versus ==

+0

我试着用等于:如果(txtUserName.getText()等于(txtPassword.getText())){ \t \t \t \t \t \t \t \t \t \t Toast.makeText(LoginActivity.this, “平等” ,Toast.LENGTH_LONG).show(); \t \t \t \t \t \t \t \t \t}其他{ \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t Toast.makeText(LoginActivity.this “Nequal”,Toast.LENGTH_LONG).show(); \t \t \t \t \t \t \t \t \t}和回报这是同样的 “Nequal” – firetrap 2013-03-11 18:35:02

+0

'字符串A =( “XYZ” .equals( “XYZ”))? “平等”:“不平等”;“我尝试了这一点,并为我工作得很好。确保你得到的值是相等的,如果不是,那么它会返回'false'。 – Smit 2013-03-11 18:45:07

+0

感谢它解决了与等于和toString;) – firetrap 2013-03-11 19:17:27

1

要比较两个字符串值,使用字符串的方法equals;对象引用的==运算符比较引用的相等性,并且由于它们是两个不同的对象,它将始终返回false。

txtUserName.getText().equals(txtPassword.getText()) 
+0

其实,有一些JRE魔术的字符串,其中装箱可能会导致==返回真正比可能会预期的更频繁。但核心答案是正确的 - 海报应该使用.equals来比较内容。 – 2013-03-11 18:31:09