我正在将String
个额外内容传递给发送到Intent
的{{1}},并将其取为:
BroadCastReceiver
此代码为我提供了以下输出(如预期的那样):
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
不期望的是第二个if语句永远不会匹配,即使07-22 10:41:00.038: I/Listener(28678): :start:
明确设置正确。我已经看过几次了,这真让我烦恼。这种行为看起来很奇怪,据我所知,我正在以正确的方式接近这一点。
有人有任何想法吗?
答案 0 :(得分: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");
}
阅读this了解更多信息。
答案 1 :(得分:2)
String不是原始数据类型,因此您不能使用==运算符来比较其中两个。相反,请尝试使用:
if (intent.getStringExtra("type").equals("start")){
和
if (intent.getStringExtra("type").equals("end")){