2013-10-18 181 views
-1

,我有以下的Android程序代碼。即使我輸入「admin」,這也是行不通的,正確的答案。然後我敬酒我的輸入,就像==「管理員」一樣。但它仍然不工作!有什麼竅門嗎?請幫忙 !!非常感謝 !!的「if」語句不工作

EditText etPassword =(EditText) findViewById(R.id.etPassword); 
String t_etPassword =etPassword.getText().toString(); 

// display the t_etPassword for checking since the "if" does not work 
Toast.makeText(getApplicationContext(), "<<" +t_etPassword +">>", Toast.LENGTH_SHORT).show(); 

if (t_etPassword == "admin") { 
    Intent intent = new Intent(getBaseContext(), ContactListActivity.class); 
    startActivity(intent); 
    } else { 
    Toast.makeText(getApplicationContext(), "Un-Authorised Access !!", Toast.LENGTH_SHORT).sho(); 
    } 
    } 
}); 
+3

請與標記你使用的語言你的問題。 – Barmar

+1

是這個java?永遠做==字符串比較總是使用字符串庫像降低兩個字符串,並使用.equals()或.equalsIgnoreCase() –

+0

''==測試參考平等。 '.equals()'測試值是否相等。 That's爲什麼用.equals() –

回答

1
if (t_etPassword == "admin") 

改變上述行來

if (t_etPassword.equals("admin")) 

現在你會得到正確的答案

3

嘗試使用 '等於',而不是 '=='。

if ("admin".equals(t_etPassword)) { 

說明:How do I compare strings in Java?

編輯:不要移動文本字符串變量,這是不必要的。 試試這個:

EditText etPassword =(EditText) findViewById(R.id.etPassword); 
if ("yourpass".equals(etPassword)) { 
    Intent intent = new Intent(getBaseContext(), ContactListActivity.class); 
    startActivity(intent); 
    } else { 
    Toast.makeText(getApplicationContext(), "Un-Authorised Access !!", Toast.LENGTH_SHORT).sho(); 
    } 
    } 
}); 
+1

+1但是爲了避免可能NPE,你可能要考慮使用' 「管理員」 .equals(t_etPassword)' – MadProgrammer

+0

@MadProgrammer指正,謝謝。 – Dancger

0

請改變這一行:

if (t_etPassword == "admin") 

if (t_etPassword.equals("admin")) 
0

您應該使用.equals代替:

if(t_etPassword.equals("admin")) 

==是檢查參考平等,而.equals用於比較值。