2012-09-25 95 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