-1

我刚刚开始使用 BroadcastReceiver (这可能是我的问题)。我正在尝试从服务创建一个视图(是的,是的,我知道你不能)所以我将请求发送到一个不可见的活动,以便在需要时创建一个可见的视图。它没有按我的意愿工作,所以我查看了 BroadcastReceivers。到目前为止,一切正常,除了我无法将我的 getStringExtra 值与任何东西进行比较。示例)假设我想将值为字符串“CREATE”的变量“param”传递给我的 BroadcastReceiver。它可以很好地到达我的接收器,并且使用 logcat 我可以看到确实方法是“CREATE”。但是如果我想用 if 语句检查参数是什么 if (param=="CREATE") 它永远不会进入 if。那么我在这里做错了什么?

public class Receiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context c, Intent i) {
        String stuff = i.getStringExtra("param");
        log(stuff);
        if (stuff=="CREATE"){
            log("why dem feels");
        }
        if((String)i.getStringExtra("method")=="CREATE"){
            log("i dont know what im doing");
        }
        log("FOR SOME REASON ITS SKIPPING THIS STEP");
    }



    //set of logs so that i dont have to keep specifying tags and shit
        public void log(int in){
               Log.d("TAG OF INTEGERS",Integer.toString(in));
           }

           public void log(String s){
               Log.d("Receiver",s);
           }
           public void log(float f){
               log((int) f);
           }

}

这是我在服务中用来发送广播的代码

Intent i = new Intent();
           i.setClassName("com.example.starteroverlay","com.example.starteroverlay.Receiver");
           i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
           String methodCall = "CREATE";
           i.putExtra("param",methodCall);
           //
           sendBroadcast(i);

只是因为我认为你们会想用代码查看我的清单的一部分

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

 <receiver android:name=".Receiver">
            <intent-filter android:priority="0">
                <action android:name="android.intent.action.MAIN"/>
            </intent-filter>
        </receiver>
4

3 回答 3

3

使用equals方法总是它会检查字符串的内容,但==只检查对象引用

if (method.equals("CREATE"))
{
      //do what you need
}
于 2013-10-03T05:27:39.110 回答
2

使用equals()而不是==比较字符串

因此,将您的代码更改为

 if (method.equals("CREATE"))

检查http://docs.oracle.com/javase/tutorial/java/data/comparestrings.html

PS。

将您的代码更改为

if (stuff.equals("CREATE")){
     log("why dem feels");
  }
if((String)i.getStringExtra("method").equals("CREATE")){
    log("i dont know what im doing");
 }
于 2013-10-03T05:24:08.103 回答
0
// try this
@Override
    public void onReceive(Context c, Intent i) {
        String stuff = i.getStringExtra("param");
        if (stuff.equals("CREATE")){
           // write your code here
        }
    }
于 2013-10-03T05:33:20.890 回答