0

に送信される にStringエクストラを渡し、次のようにフェッチしています。IntentBroadCastReceiver

public void onReceive(Context context, Intent intent) {
    if (intent.hasExtra("type")){
        Log.i("Listener", ":"+intent.getStringExtra("type")+":");

        if (intent.getStringExtra("type") == "start"){  
            Log.i("Listener", "start");
        }
        if (intent.getStringExtra("type") == "end"){    
            Log.i("Listener", "end");
        }
    }
}//end method

このコードにより、次の出力が得られます (予想どおり)。

07-22 10:41:00.038: I/Listener(28678): :start:

type2 番目の if ステートメントは、明らかに正しく設定されていても一致しないことは予想外です。私はこれを数回見ましたが、本当に迷惑です。私が知る限り、この動作は奇妙に思えますが、私はこれに正しい方法で取り組んでいます。

誰でもアイデアはありますか?

4

2 に答える 2

3

String比較のために使用し、使用しequals()ないで==ください。

変化する:

if (intent.getStringExtra("type") == "start")
{  
      Log.i("Listener", "start");
}
if (intent.getStringExtra("type") == "end")
{    
     Log.i("Listener", "end");
}

if (intent.getStringExtra("type").equals("start")){  
            Log.i("Listener", "start");
        }
        if (intent.getStringExtra("type").equals("end")){    
            Log.i("Listener", "end");
        }

詳細については、これをお読みください。

于 2012-07-22T08:49:20.570 に答える
2

文字列はプリミティブ データ型ではないため、== 演算子を使用して 2 つを比較することはできません。代わりに、次を使用してみてください。

if (intent.getStringExtra("type").equals("start")){  

if (intent.getStringExtra("type").equals("end")){    
于 2012-07-22T08:51:02.877 に答える