2010-12-05 7 views
1

J'essaie de vérifier la valeur de EditText dans mon AlertDialog.Builder afin que je puisse empêcher l'utilisateur d'entrer rien dans le EditText.Impossible de vérifier la valeur d'un EditText dans un AlertDialog.Builder

Pour une raison quelconque, lorsque j'utilise le code ci-dessous, il n'obtient jamais dans l'instruction if (mEditText.getText() == null || test == ""), il exécute toujours l'instruction else à la place.

Des idées? Merci les amis.

@Override 
    protected Dialog onCreateDialog(int id) { 

     LayoutInflater factory = LayoutInflater.from(mContext); 
     final View textEntryView = factory.inflate(R.layout.file_save_dialog, null); 
     mEditText = (EditText) textEntryView.findViewById(R.id.file_name_edit); 
     final Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake); 

     return new AlertDialog.Builder(mContext) 
      .setIcon(android.R.drawable.ic_menu_save) 
      .setTitle(R.string.file_name_title) 
      .setView(textEntryView) 
      .setPositiveButton(R.string.dialog_ok, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int whichButton) { 
        String test = mEditText.getText().toString(); 

        //This if never works...it always hits the else statement 
        if (mEditText.getText() == null || test == "") { 
         mEditText.startAnimation(shake); 
        } 
        else { 
         finish(); 
        } 

       } 
      }) 
      .setNegativeButton(R.string.dialog_cancel, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int whichButton) { 
        finish(); 
       } 
      }) 
      .create(); 
    } 

Répondre

2

Faites de la manière Android:

if (TextUtils.isEmpty(mEditText.getText()) { 
    mEditText.startAnimation(shake); 
} else { 
    finish(); 
} 
1

mis comme ça

if (test == null || test.length() <= 0) { 
    mEditText.startAnimation(shake); 
} 
else { 
    finish(); 
} 
+0

Merci. La vérification de la longueur a bien fonctionné, mais je suis perplexe quant à la raison pour laquelle mon code original n'a pas fonctionné. – user432209

+2

Votre code original n'a pas fonctionné car dans Java, les chaînes sont comparées à égales(), pas == – ognian

1

Si vous voulez comparer deux valeurs de chaîne, utilisez la méthode equals().

Par exemple:

stringOne.equals(stringTwo); 
Questions connexes