2013-03-11 296 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