試行中の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
文字列を確認するにはどうすればよいですか?前もって感謝します。
@Jon Skeetコメントから、実際にはString
の値は"null"
です。次のコードで解決しました
if (userEmail != null && !userEmail.isEmpty() && !userEmail.equals("null"))
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);
注
空の文字列がnullに等しいか、長さがゼロであるか、「null」文字列を含むかどうかを確認する
public static boolean isEmptyString(String text) {
return (text == null || text.trim().equals("null") || text.trim()
.length() <= 0);
}
あなたはこれでそれを確認できます:
if(userEmail != null && !userEmail .isEmpty())
そして、その順序で上記の正確なコードを使用する必要があることを忘れないでください。これは、userEmail
がnullの場合、userEmail.isEmpty()
からnullポインター例外を取得しないようにするためです。
上記の説明は、Java SE 1.6以降でのみ使用可能です。以前のバージョンのuserEmail.length() == 0
を確認してください。
更新:TextUtils
クラスのisEmpty(stringVal)
メソッドから使用:
if (TextUtils.isEmpty(userEmail))
TextUtilsのユーティリティメソッド「isEmpty」で確認できます。
isEmpty(CharSequence str)メソッドは、nullと長さの両方の条件をチェックします。
public static boolean isEmpty(CharSequence str) {
if (str == null || str.length() == 0)
return true;
else
return false;
}
nullまたは空の文字列をチェックして、これを試すことができる場合
if (createReminderRequest.getDate() == null && createReminderRequest.getDate().trim().equals("")){
DialogUtility.showToast(this, ProjectUtils.getString(R.string.please_select_date_n_time));
}
以下のように、空の文字列リテラルで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);