无法将可编辑转换为字符串(用户名/密码测试)

时间:2012-01-24 18:39:31

标签: android if-statement tostring

我正在尝试创建一个简单的用户名/密码登录屏幕。我已经完成了布局,现在,我正在设置它,所以当用户名(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语句似乎存在问题?

3 个答案:

答案 0 :(得分:4)

使用方法String测试.equals("String")相等。

使用==,您正在测试对象的引用是否相等。

答案 1 :(得分:3)

尝试使用equalsIgnoreCase(String)代替==比较器。

像这样:dbu.equalsIgnoreCase(user1)

答案 2 :(得分:1)

dubuser1是两个独立的String对象。你正在比较它们:dbu == user1。这将始终返回false。相反,请将其替换为dbu.equals(user1)