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?

Antworten:



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")) 

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())

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

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

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

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


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

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

-1

Wenn alle Antworten nicht funktionieren, versuchen Sie es bitte

String myString = null;

if(myString.trim().equalsIgnoreCase("null")){
    //do something
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.