次のように条件を設定してtrueまたはfalseを設定しようとしていますが、常にfalseを返します。
boolean checked = (categoriesCursor.getString(3) == "1") ? true
: false;
Log.i("Nomad",categoriesCursor.getString(3)+ " "+checked);
値を出力しようとすると、次のようになります。
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 0 false
01-12 00:05:38.072: I/Nomad(23625): 0 false
stringsではなくreferencesを比較しているため、常にfalse
が返されます。あなたはおそらくこれを代わりに意味しました:
_boolean checked = (categoriesCursor.getString(3).equals("1")) ? true
: false;
_
これはたまたまこれと同等です:
_boolean checked = categoriesCursor.getString(3).equals("1");
_
そして、categoriesCursor.getString(3)
がnull
の場合、代わりにこれを行う方が安全です。
_boolean checked = "1".equals(categoriesCursor.getString(3));
_
==
の代わりにequals
を使用してください
boolean checked = (categoriesCursor.getString(3).equals("1"));
これを使ってみてください
(categoriesCursor.getString(3).equals("1")) ? true : false;
_==
_の代わりにcategoriesCursor.getString(3).equals("1")
を使用します
まず、文字列を比較するには、equals
メソッドを使用する必要があります。
categoriesCursor.getString(3).equals("1")
次に、ここでは三項演算子は必要ありません。 equals
の結果はすでにブール値になっているので、それを割り当てるだけです。
boolean checked = categoriesCursor.getString(3).equals("1");
これを次のように変更します。
boolean checked = (categoriesCursor.getString(3).equals("1")) ? true : false;
文字列の内容を比較するために==
を使用しないでください。
注意:==
演算子は、Javaでオーバーロードまたは変更できません。 object1 == object2
を使用している場合、object1
およびobject2
は文字列またはその他のオブジェクトであり、参照が同じ基本オブジェクトを指しているかどうかを確認します。これは内容を比較しません。
まず、三項演算子は必要ありません。次に、_==
_の代わりにequals()
を使用する必要があります。 _==
_演算子は、オブジェクトへの参照が等しいかどうかを確認するためです。