Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android intent.getStringExtra不可比较_Android_Android Intent_If Statement_Broadcastreceiver - Fatal编程技术网

Android intent.getStringExtra不可比较

Android intent.getStringExtra不可比较,android,android-intent,if-statement,broadcastreceiver,Android,Android Intent,If Statement,Broadcastreceiver,我刚刚开始使用BroadcastReceiver(这可能是我的问题)。我正在尝试从服务创建视图(是的,是的,我知道你不能),因此我将请求发送到一个不可见的活动,以便在需要时创建可见视图。它没有按我想要的那样工作,所以我调查了一下。到目前为止,一切正常,但我无法将getStringExtra值与任何值进行比较。示例)假设我想将值为字符串“CREATE”的变量“param”传递给我的BroadcastReceiver。它很好地到达了我的接收器,通过logcat,我可以看到方法确实是“CREATE”。

我刚刚开始使用BroadcastReceiver(这可能是我的问题)。我正在尝试从服务创建视图(是的,是的,我知道你不能),因此我将请求发送到一个不可见的活动,以便在需要时创建可见视图。它没有按我想要的那样工作,所以我调查了一下。到目前为止,一切正常,但我无法将getStringExtra值与任何值进行比较。示例)假设我想将值为字符串“CREATE”的变量“param”传递给我的BroadcastReceiver。它很好地到达了我的接收器,通过logcat,我可以看到方法确实是“CREATE”。但是如果我想用if语句if(param==“CREATE”)检查param是什么,它永远不会进入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>

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

所以把你的代码改成

检查

PS.

将代码更改为

if (stuff.equals("CREATE")){
     log("why dem feels");
  }
if((String)i.getStringExtra("method").equals("CREATE")){
    log("i dont know what im doing");
 }

始终使用
equals
方法,它将检查字符串的内容,但
=
仅检查对象引用

if (method.equals("CREATE"))
{
      //do what you need
}

删除
i.addFlags(意图.标志\活动\新任务)的可能重复这不需要接收器。不开玩笑,我花了好几个小时寻找它。我在一个小得多的范围内搜索,虽然我想知道为什么我的意图可能会失败,或者为什么我的接收器没有得到它需要的东西。哈哈,我需要检查字符串。非常感谢你的盛情款待
if (method.equals("CREATE"))
{
      //do what you need
}
// try this
@Override
    public void onReceive(Context c, Intent i) {
        String stuff = i.getStringExtra("param");
        if (stuff.equals("CREATE")){
           // write your code here
        }
    }