Android check null or empty string in Android

AndroidAndroid AsynctaskAndroid Fragmentactivity

Android Problem Overview


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?

Android Solutions


Solution 1 - Android

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 2 - Android

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

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

Solution 3 - Android

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 - Android

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 - Android

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 - Android

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 - Android

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 - Android

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 - Android

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 - Android

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 - Android

Incase all the answer given does not work, kindly try

String myString = null;

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser3384985View Question on Stackoverflow
Solution 1 - AndroidSuragchView Answer on Stackoverflow
Solution 2 - Androiduser3384985View Answer on Stackoverflow
Solution 3 - AndroidNaruto UzumakiView Answer on Stackoverflow
Solution 4 - Androidhitesh141View Answer on Stackoverflow
Solution 5 - AndroidNSKView Answer on Stackoverflow
Solution 6 - AndroidRishul GulatiView Answer on Stackoverflow
Solution 7 - AndroidAbdul Basit RishiView Answer on Stackoverflow
Solution 8 - AndroidadarshView Answer on Stackoverflow
Solution 9 - AndroidPaoloView Answer on Stackoverflow
Solution 10 - AndroidAkhi PrajapatiView Answer on Stackoverflow
Solution 11 - AndroidDaniel NyamasyoView Answer on Stackoverflow