wake-up-neo.com

Android überprüft null oder leere Zeichenfolge in Android

In meinem Versuch AsyncTask bekomme ich eine E-Mail-Adresse von meinem Server. In onPostExecute() muss ich die E-Mail-Adresse empty oder null prüfen. Ich habe folgenden Code verwendet, um das zu überprüfen:

if (userEmail != null && !userEmail.isEmpty()) {
    Toast.makeText(getActivity(), userEmail, Toast.LENGTH_LONG).show();
    UserEmailLabel.setText(userEmail);
}

Aber in meiner Toast sehe ich, dass null gedruckt wird. Mein vollständiger Code:

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);
        }
    }

Wie kann ich nach null und empty string suchen? Danke im Voraus.

50
user3384985

Aus dem Kommentar von @Jon Skeet lautet der String-Wert wirklich "null". Der folgende Code hat es gelöst

if (userEmail != null && !userEmail.isEmpty() && !userEmail.equals("null")) 
50
user3384985

Verwenden Sie 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);

Anmerkungen

  • Die Dokumentation gibt an, dass sowohl die Null- als auch die Nulllänge geprüft werden. Das Rad muss hier nicht neu erfunden werden.
  • Eine gute Praxis, die zu befolgen ist, ist vorzeitige Rückkehr .
114
Suragch

Überprüfung auf leere Zeichenfolge, wenn diese gleich Null ist, Länge Null ist oder "Null" -Zeichenfolge enthält

public static boolean isEmptyString(String text) {
        return (text == null || text.trim().equals("null") || text.trim()
                .length() <= 0);
    }
14
hitesh141

Sie können es damit überprüfen:

if(userEmail != null && !userEmail .isEmpty())

Und denken Sie daran, dass Sie bei dieser Bestellung genau den obigen Code verwenden müssen. Da dies gewährleistet wird, erhalten Sie keine Nullzeigerausnahme von userEmail.isEmpty(), wenn userEmail null ist.

Diese Beschreibung ist nur seit Java SE 1.6 verfügbar. Überprüfen Sie userEmail.length() == 0 in früheren Versionen.


UPDATE:

Verwenden Sie die Methode isEmpty(stringVal) aus der Klasse TextUtils:

if (TextUtils.isEmpty(userEmail))
6
Naruto Uzumaki

Sie können es mit der Utility-Methode "isEmpty" von TextUtils überprüfen.

die Methode isEmpty (CharSequence str) überprüft beide Bedingungen auf Null und Länge.

public static boolean isEmpty(CharSequence str) {
     if (str == null || str.length() == 0)
        return true;
     else
        return false;
}
1
NSK

wenn Sie null oder leere Zeichenfolge auswählen, können Sie dies versuchen 

if (createReminderRequest.getDate() == null && createReminderRequest.getDate().trim().equals("")){
    DialogUtility.showToast(this, ProjectUtils.getString(R.string.please_select_date_n_time));
}
1
adarsh

Alles, was Sie tun können, ist, die equals () -Methode für ein leeres String-Literal aufzurufen und das zu testende Objekt zu übergeben, wie unten gezeigt:

 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);
0
Salman Nazir