'Android check null or empty string in Android

In my trying AsyncTask I get email address from my server. In onPostExecute() I have to check is email address empty or null. I used following code to check it:

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

But in my Toast I see null is printed. My full 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);
        }
    }

How can I check for null and empty string?



Solution 1:[1]

From @Jon Skeet comment, really the String value is "null". Following code solved it

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

Solution 2:[2]

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

Notes

  • The documentation states that both null and zero length are checked for. No need to reinvent the wheel here.
  • A good practice to follow is early return.

Solution 3:[3]

Yo can check it with this:

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

And remember you must use from exact above code with that order. Because that ensuring you will not get a null pointer exception from userEmail.isEmpty() if userEmail is null.

Above description, it's only available since Java SE 1.6. Check userEmail.length() == 0 on previous versions.


UPDATE:

Use from isEmpty(stringVal) method from TextUtils class:

if (TextUtils.isEmpty(userEmail))

Kotlin:

Use from isNullOrEmpty for null or empty values OR isNullOrBlank for null or empty or consists solely of whitespace characters.

if (userEmail.isNullOrEmpty())
...
if (userEmail.isNullOrBlank())

Solution 4:[4]

Checking for empty string if it is equal to null, length is zero or containing "null" string

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

Solution 5:[5]

You can check it with utility method "isEmpty" from TextUtils,

isEmpty(CharSequence str) method check both condition, for null and length.

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

Solution 6:[6]

If using Kotlin:-

 if (TextUtils.isEmpty(userEmail).not()) {
        // do your work
    } else {
        // can show error message userEmail is empty
    }

If using Java:-

  if (!TextUtils.isEmpty(userEmail)) {
        // do your work
    } else {
        // can show error message userEmail is empty
    }

Solution 7:[7]

Right way to check empty string.

1. It is faster but not null safe, it will throw NullPointErexception if string is null

if str.isEmpty() then

2. It is also faster but not null safe.

if String.length() = 0 then

3. It is not faster as previous two but it is null safe.

if "".equals(str) then

4. Fouth way

TextUtils.isEmpty(myString)

5. If you want to check for null string.

StringUtils.isEmpty(nullString)

6. If you want to check null and empty string both at same time

if (str == null || str.length() == 0)

Solution 8:[8]

if you check null or empty String so you can try this

 if (yourString != null){
    if(yourString.length==0  && yourString.equals(""))
    Toast.makeText(myClassName.this, "Empty",Toast.LENGTH_LONG).show();
 }else{
    Toast.makeText(myClassName.this, "String null" , Toast.LENGTH_LONG).show();
    }

or using TextUtils class

 if (TextUtils.isEmpty(yourString )) {
       Toast.makeText(myClassName.this, "Empty" , Toast.LENGTH_LONG).show();
    } 

Solution 9:[9]

My simple solution to test if a string is null:

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

There are two cases.

The variable (of type String) is null(doesn't exists): == works.

The variable has a null value, *.equals("null") gives te right boolean value.

See the picture. enter image description here

Solution 10:[10]

This worked for me

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

or Use this for strings

String DEP_DATE;
if (DEP_DATE.equals("") || DEP_DATE.length() == 0 || DEP_DATE.isEmpty() || DEP_DATE == null){
}

Solution 11:[11]

Incase all the answer given does not work, kindly try

String myString = null;

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 user3384985
Solution 2
Solution 3
Solution 4 hitesh141
Solution 5 NSK
Solution 6 Rishul Gulati
Solution 7 Abdul Basit Rishi
Solution 8
Solution 9
Solution 10
Solution 11 Daniel Nyamasyo