Android prüft null oder leere Zeichenfolge in Android

75

Bei meinem Versuch AsyncTaskerhalte ich eine E-Mail-Adresse von meinem Server. In muss onPostExecute()ich überprüfen, ob die E-Mail-Adresse emptyoder null. Ich habe folgenden Code verwendet, um dies zu überprüfen:

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

Aber in meinem Toastsehe ich nullgedruckt. 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 überprüfen nullund emptyString?

user3384985
quelle

Antworten:

155

Verwenden 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

Suragch
quelle
63

Aus @ Jon Skeet Kommentar ist wirklich der StringWert "null". Der folgende Code hat es gelöst

if (userEmail != null && !userEmail.isEmpty() && !userEmail.equals("null")) 
user3384985
quelle
1
if (userEmail != null && (!TextUtils.equals(userEmail ,"null")) && (!TextUtils.isEmpty(userEmail))){funktioniert auch
user3384985
5
Dies funktioniert möglicherweise für E-Mails, wird jedoch NICHT verwendet equals("null"), um nach einem Null-Benutzernamen zu suchen. bbc.com/future/story/…
Diti
1
Es kann vielleicht besser sein, userEmail.equalsIgnoreCase("null")im Falle eines Nullwerts in Großbuchstaben zu haben.
Subby
26

Sie können dies damit überprüfen:

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

Und denken Sie daran, dass Sie bei dieser Bestellung genau den obigen Code verwenden müssen. Weil dies sicherstellt, dass Sie keine Nullzeigerausnahme erhalten, userEmail.isEmpty()wenn if userEmailnull ist.

Die obige Beschreibung ist erst seit Java SE 1.6 verfügbar. Überprüfen Sie userEmail.length() == 0frühere Versionen.


UPDATE:

Verwendung von isEmpty(stringVal)Methode aus TextUtilsKlasse:

if (TextUtils.isEmpty(userEmail))

Kotlin:

Verwenden Sie from isNullOrEmptyfür null oder leere Werte ODER isNullOrBlankfür null oder leer oder besteht ausschließlich aus Leerzeichen.

if (userEmail.isNullOrEmpty())
...
if (userEmail.isNullOrBlank())
Naruto Uzumaki
quelle
14

Prüfen, ob eine leere Zeichenfolge gleich null ist, die Länge null ist oder eine Zeichenfolge "null" enthält

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

Sie können dies mit der Dienstprogrammmethode "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;
}
NSK
quelle
1

Wenn Sie null oder leere Zeichenfolge aktivieren, 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));
}
adarsh
quelle
0

Meine einfache Lösung, um zu testen, ob eine Zeichenfolge null ist:

if (s.equals ("null")) {.....}

Es gibt zwei Fälle.

Die Variable (vom Typ String) ist null (existiert nicht): == funktioniert.

Die Variable hat einen Nullwert, * .equals ("null") gibt den richtigen booleschen Wert an.

Siehe das Bild. Geben Sie hier die Bildbeschreibung ein

Paolo
quelle
Meinen Sie das Wort null oder eine Variable mit dem Wert null?
-1

Das hat bei mir funktioniert

EditText   etname = (EditText) findViewById(R.id.etname);
 if(etname.length() == 0){
                    etname.setError("Required field");
                }else{
                    Toast.makeText(getApplicationContext(),"Saved",Toast.LENGTH_LONG).show();
                }

oder Verwenden Sie dies für Zeichenfolgen

String DEP_DATE;
if (DEP_DATE.equals("") || DEP_DATE.length() == 0 || DEP_DATE.isEmpty() || DEP_DATE == null){
}
Akhi Prajapati
quelle
Bitte fügen Sie zuerst eine Nullprüfung hinzu.
Benny
-1

Sie können lediglich die Methode equals () für ein leeres String-Literal aufrufen und das zu testende Objekt wie unten gezeigt übergeben:

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

Wenn alle Antworten nicht funktionieren, versuchen Sie es bitte

String myString = null;

if(myString.trim().equalsIgnoreCase("null")){
    //do something
}
Daniel Nyamasyo
quelle