2015-01-14 2 views
1

내 코드에서 암호 필드가 is empty인지 확인하고 싶습니다. 이를 수행하기 위해 isEmpty() 메소드를 사용하고 있지만 작동하지 않습니다. password 필드를 비워두면 세 번째가 아닌 두 번째 else-if 문으로 되돌아갑니다.
EditText.isEmpty()가 작동하지 않는지 확인

public class MainActivity extends Activity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final EditText password = (EditText) findViewById(R.id.editText_Password); 
    Button enter = (Button) findViewById(R.id.button); 

    enter.setOnClickListener(new OnClickListener() { 



     @Override 
     public void onClick(View arg0) { 

      String user_pass; 
      user_pass = password.getText().toString(); 

       if (user_pass.equals("123")) { 
        Toast.makeText(MainActivity.this, "Welcome!", Toast.LENGTH_SHORT).show(); 
        Intent I = new Intent("com.mavenmaverick.password.OKActivity"); 
        startActivity(I); 
       } 

       else 

        if(user_pass != "123"){ 
        Toast.makeText(MainActivity.this, "Incorrect", Toast.LENGTH_SHORT).show(); 
        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this); 
         dialogBuilder.setIcon(R.drawable.ic_launcher); 
         dialogBuilder.setTitle("Oops!"); 
         dialogBuilder.setMessage("Incorrect Password"); 
         dialogBuilder.setPositiveButton("OK", null); 
         dialogBuilder.show(); 
        } 

       else 
        if (user_pass.isEmpty()) { 
         AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this); 
          dialogBuilder.setIcon(R.drawable.ic_launcher); 
          dialogBuilder.setTitle("Oops!"); 
          dialogBuilder.setMessage("Password Field Cannot Be Empty"); 
          dialogBuilder.setPositiveButton("OK", null); 
          dialogBuilder.show(); 
         } 

     } 
    }); 




} 

답변

-1

두 번째로 user_pass != "123"을 확인하십시오. 논리적으로 user_pass이 비어 있으면 "123"이 아니며 세 번째 경우에도 실행되지 않습니다. 작동 시키려면 두 번째와 세 번째를 전환하십시오.

+0

예! 무엇보다도'.isEmpty()'를 옮겼습니다. 그것은 작동했습니다 : D –

+0

'user_pass! = "123"'이 올바르지 않습니다. '! user_pass.equals ("123")' – Simon

0
if (string == "aString") { 
    ... 
} else if (string != "somestring") { 
    ... 
} else if (string.isEmpty()) { 
    ... 
} 

문자열이 비어 있는지 확인하지 않으므로 두 번째 if 블록에서 같지 않아 중단됩니다.

이 문제를 방지하려면 먼저 비어 있는지 확인하십시오. 문자열 값을 비교할 때 또한 하지 사용 ==을 수행 사업자와

if (user_pass.isEmpty()) { 
    // It's empty 
} else if (user_pass.equals("123")) { 
    // Equals 
} else if (!user_pass.equals("123")){ 
    // Not equals 
} 
+0

예! 너의 요점이있어. 나는 그것을 고쳤다 :) –

0

잘못된 문자열 비교. 문자열 비교를 위해 .equals() 메소드를 사용할 수 있습니다. 귀하의 경우에 대한 그런데

,

그냥 사용

if (user_pass.isEmpty()) { 
     displayAlertDialog("Password Field Cannot Be Empty"); 
}else if(user_pass.equals("123")) 
{ 
Toast.makeText(MainActivity.this, "Welcome!", Toast.LENGTH_SHORT).show(); 
Intent I = new Intent("com.mavenmaverick.password.OKActivity"); 
startActivity(I); 

}else 
{ 
Toast.makeText(MainActivity.this, "Incorrect", Toast.LENGTH_SHORT).show(); 
    displayAlertDialog("Incorrect Password");    
} 

private void displayAlertDialog(String message) 
{ 
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this); 
          dialogBuilder.setIcon(R.drawable.ic_launcher); 
          dialogBuilder.setTitle("Oops!"); 
          dialogBuilder.setMessage(message); 
          dialogBuilder.setPositiveButton("OK", null); 
          dialogBuilder.show(); 
} 
+0

그것은 일했다. 나는 논리를 망쳤다 : D –

0

경우 (user_pass! = "123") {당신은 직접 memoy 위치을 확인하는

항상 false입니다.

if (! user_pass.equals ("123")) 대신 {을 사용하십시오.