2015-01-14 3 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.

Использовать , если (! User_pass.equals ("123")) { вместо.

 Смежные вопросы

  • Нет связанных вопросов^_^