2012-01-24 20 views
1

我想創建一個簡單的用戶名/密碼登錄屏幕。我已經完成了佈局,現在,我試圖設置它,以便當用戶名(EditText) == "crete",那麼它應該做些什麼。這裏是我的代碼...:麻煩轉換可編輯字符串(用戶名/密碼測試)

public class Login extends Activity { 
    public static EditText username, password; 
    public Button loginbutton; 
    boolean accessgranted; 
    public String dbu, dbp, user1; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login); 

     username = (EditText) this.findViewById(R.id.username); 
     password = (EditText) this.findViewById(R.id.password);   
     loginbutton = (Button) this.findViewById(R.id.loginbutton); 

     user1 = "crete"; 

     loginbutton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      try{ 
       dbu = (username.getText()).toString(); 
      } 
      finally{ 
       if (dbu == user1){ 
        username.setText("SUCCESS"); 
       } 
      } 
     } 
     }); 
    } 
} 

這個,可悲的是,不起作用。它正確地將其轉換爲字符串(我認爲),因爲當我測試此代碼出來:

loginbutton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     try{ 
       dbu = (username.getText()).toString(); 
     } 
     finally{ 
       username.setText("done" + dbu); 
      } 
     } 

    } 
}); 

它正確輸入你輸入的內容爲EditText,再加上單詞「完成」。

創建if-then語句似乎有問題?

回答

4

您測試String與方法.equals("String")的等同性。

使用==您正在測試對象的引用是否相等。

+0

謝謝,工作完美無瑕! – codesomethin

1

dubuser1是兩個單獨的String對象。你正在比較它們:dbu == user1。這將始終返回false。而應將其替換爲。

3

嘗試使用equalsIgnoreCase(String)而不是==比較器。

喜歡分享:dbu.equalsIgnoreCase(user1)