AsyncTask
j'essaie de recevoir l'adresse e-mail de mon serveur. Dans onPostExecute()
je dois vérifier que l'adresse e-mail est empty
ou null
. J'ai utilisé le code suivant pour le vérifier:
if (userEmail != null && !userEmail.isEmpty()) {
Toast.makeText(getActivity(), userEmail, Toast.LENGTH_LONG).show();
UserEmailLabel.setText(userEmail);
}
Mais dans ma Toast
, je vois que null
est imprimé. Mon code complet:
private class LoadPersonalData extends AsyncTask<String, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
protected Void doInBackground(String... res) {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("user_id", PrefUserName));
params.add(new BasicNameValuePair("type", type_data));
JSONObject json = jsonParser.makeHttpRequest(Url, "POST", params);
String result = "";
try {
result = json.getString("message");
} catch (JSONException e) {
e.printStackTrace();
}
if (result.equals("success")) {
try {
userEmail = json.getString("email");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
if (userEmail != null && !userEmail.isEmpty()) {
Toast.makeText(getActivity(), userEmail, Toast.LENGTH_LONG).show();
UserEmailLabel.setText(userEmail);
}
}
Comment puis-je vérifier les chaînes null
et empty
? Merci d'avance.
D'après le commentaire @Jon Skeet, la valeur String
est réellement "null"
. Le code suivant l'a résolu
if (userEmail != null && !userEmail.isEmpty() && !userEmail.equals("null"))
TextUtils.isEmpty( someString )
String myString = null;
if (TextUtils.isEmpty(myString)) {
return; // or break, continue, throw
}
// myString is neither null nor empty if this point is reached
Log.i("TAG", myString);
Remarques
Recherche de chaîne vide si elle est égale à null, si sa longueur est égale à zéro ou si elle contient une chaîne "null"
public static boolean isEmptyString(String text) {
return (text == null || text.trim().equals("null") || text.trim()
.length() <= 0);
}
Vous pouvez le vérifier avec ceci:
if(userEmail != null && !userEmail .isEmpty())
Et rappelez-vous que vous devez utiliser exactement le code ci-dessus avec cet ordre. En vous assurant que vous n'obtiendrez pas d'exception de pointeur null de userEmail.isEmpty()
si userEmail
est null.
Ci-dessus, il n’est disponible que depuis Java SE 1.6. Vérifiez userEmail.length() == 0
sur les versions précédentes.
METTRE À JOUR:
Utilisation de la méthode isEmpty(stringVal)
de la classe TextUtils
:
if (TextUtils.isEmpty(userEmail))
Vous pouvez le vérifier avec la méthode "isEmpty" de TextUtils,
la méthode isEmpty (CharSequence str) vérifie les deux conditions (null et length).
public static boolean isEmpty(CharSequence str) {
if (str == null || str.length() == 0)
return true;
else
return false;
}
si vous cochez NULL ou String vide pour pouvoir essayer ceci
if (createReminderRequest.getDate() == null && createReminderRequest.getDate().trim().equals("")){
DialogUtility.showToast(this, ProjectUtils.getString(R.string.please_select_date_n_time));
}
Tout ce que vous pouvez faire est d'appeler la méthode equals () sur un littéral chaîne vide et de transmettre l'objet que vous testez comme indiqué ci-dessous:
String nullString = null;
String empty = new String();
boolean test = "".equals(empty); // true
System.out.println(test);
boolean check = "".equals(nullString); // false
System.out.println(check);