0

私の問題コードの要点は次のとおりです。

String from = extra.getString("from");
Log.d("Cat", from);  //debugs as edit
if(from == "edit") {
  Log.d("Cat", "Edit");
} else {
  Log.d("Cat", "Not Edit");
}

「編集しない」に移動します

私が持っている呼び出し活動で

cIntent.putExtra("from", "edit");
startActivity(cIntent);

getInt まで変更して 1 を渡すと Edit としてデバッグされ、2 を渡すと Not Edit としてデバッグされます。

何が起こっているのかわかりません。必要に応じて一緒に暮らすこともできますが、ここには非常に基本的なものが欠けているように感じます.

ありがとう。

4

4 に答える 4

1

Java では、次のように文字列を比較する必要があります。

if(from.equal ( "edit") ) 
{
  Log.d("Cat", "Edit");
} 
else 
{
  Log.d("Cat", "Not Edit");
}

「==」は、値ではなくオブジェクトの比較に使用されます。

于 2012-02-09T04:24:48.467 に答える
1

equals次の方法を使用します。

if(from.equals("edit")) {
  Log.d("Cat", "Edit");
} else {
  Log.d("Cat", "Not Edit");
}
于 2012-02-09T04:25:27.483 に答える
0

Javaでは、==を使用して比較すると、オブジェクト間の参照ID(ポインター)が比較されます。intのような数値オブジェクトの場合、その値はidです。ただし、Stringを使用すると、2つの同一の文字列のIDが異なる場合があります。したがって、==を使用してそれらを比較すると、オブジェクトが異なるため、falseが返されます。

ある種のfirstString.equal(secondString)を使用する場合、その文字列の値を取得し、それを使用して比較します。

これがあなたの質問に答えることを願っています。長い話は、==を使用して文字列を比較することは決してありません。

于 2012-02-09T04:31:52.940 に答える
0

str.equalsIgnoreCase(String s)equals メソッドは主にオブジェクトを比較するために使用され、場合によっては 2 つのまったく同じ文字列を比較できないため、文字列を比較するときに使用する必要があります。

于 2012-02-09T10:03:24.630 に答える