0

我将String额外的传递给Intent发送到的 a 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

这段代码给了我以下输出(如预期的那样):

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

出乎意料的是,第二个 if 语句永远不会匹配,即使type显然设置正确。我已经看过几次了,这真的让我很烦。这种行为似乎很奇怪,据我所知,我正在以正确的方式处理这个问题。

有人有什么想法吗?

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

String 不是原始数据类型,因此您不能使用 == 运算符来比较它们中的两个。相反,请尝试使用:

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

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