web-dev-qa-db-ja.com

Android Androidのnullまたは空の文字列を確認します

試行中のAsyncTaskでは、サーバーから電子メールアドレスを取得しています。 onPostExecute()で確認する必要があるのは、電子メールアドレスemptyまたはnullです。次のコードを使用して確認しました。

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

しかし、私のToastにはnullが表示されています。私の完全なコード:

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

nullおよびempty文字列を確認するにはどうすればよいですか?前もって感謝します。

55
user3384985

@Jon Skeetコメントから、実際にはStringの値は"null"です。次のコードで解決しました

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

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

  • documentation は、ヌルとゼロ長の両方がチェックされることを示しています。ここで車輪を再発明する必要はありません。
  • 従うことをお勧めするのは、 アーリーリターン です。
120
Suragch

空の文字列がnullに等しいか、長さがゼロであるか、「null」文字列を含むかどうかを確認する

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

あなたはこれでそれを確認できます:

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

そして、その順序で上記の正確なコードを使用する必要があることを忘れないでください。これは、userEmailがnullの場合、userEmail.isEmpty()からnullポインター例外を取得しないようにするためです。

上記の説明は、Java SE 1.6以降でのみ使用可能です。以前のバージョンのuserEmail.length() == 0を確認してください。


更新:

TextUtilsクラスのisEmpty(stringVal)メソッドから使​​用:

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

TextUtilsのユーティリティメソッド「isEmpty」で確認できます。

isEmpty(CharSequence str)メソッドは、nullと長さの両方の条件をチェックします。

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

nullまたは空の文字列をチェックして、これを試すことができる場合

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

以下のように、空の文字列リテラルでequals()メソッドを呼び出し、テストするオブジェクトを渡すだけです。

 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