2012-09-25 92 views
0

我已经写了有硬编码password.my问题登录身份验证的简单代码是evenif我输入正确的密码,我的控制elese循环会登录不工作

edt=(EditText)findViewById(R.id.edt); 
btn=(Button)findViewById(R.id.sub); 
s1=edt.getText().toString(); 

btn.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Log.d("mynameeeeee",s1); 
     if(s1=="123") 
     { 
     Toast.makeText(getApplicationContext(), "Successful",Toast.LENGTH_LONG).show(); 
     } 
     else 
     { 
     Log.d("coming in elseeeee","coming in elseeeee"); 
     Toast.makeText(getApplicationContext(), "not valid",Toast.LENGTH_LONG).show(); 
     } 
    } 
}); 

回答

2

这里的问题:

你存储在创建时编辑文本内容的参考,当编辑文本是空的。

你应该检索要比较编辑文本每次被点击你的情况键时的内容:

执行以下操作:

edt=(EditText)findViewById(R.id.edt); 
btn=(Button)findViewById(R.id.sub); 

btn.setOnClickListener (new OnClickListener() { 
    @Override 
    public void onClick (View v) { 
      Log.d ("mynameeeeee" , edt.getText().toString()); 
      if (edt.getText().toString().equals ("123")) 
      { 
       Toast.makeText(getApplicationContext(), "Successful",Toast.LENGTH_LONG).show(); 
      } 
      else 
      { 
       Log.d("coming in elseeeee","coming in elseeeee"); 
       Toast.makeText(getApplicationContext(), "not valid",Toast.LENGTH_LONG).show(); 
      } 

     } 
    }); 
2

该字符串应该像进行比较:

if(s1.equals("123")) {} 
+1

我相信你忘了一个括号在equals语句之后。 – Leeeeeeelo

2

更改您的if语句这样

if(s1.equals("123")) 
{ 
     Toast.makeText(getApplicationContext(), "Successful",Toast.LENGTH_LONG).show(); 
} 
else 
{ 
     Log.d("coming in elseeeee","coming in elseeeee"); 
     Toast.makeText(getApplicationContext(), "not valid",Toast.LENGTH_LONG).show(); 
} 

当c omparing弦始终使用.equals()功能

+0

我已经做了.equals但它仍然会在其他 – user1522869

1

==检查这两个变量是否指的是同一个对象。在这种情况下,因为它们是参照不同的对象所以==结果为假。

使用equals()方法s1.equals("123")到检查字符串对象的内容。

+0

在别人还在继续 – user1522869