无法将String传递给Intent&开始服务

时间:2013-08-13 15:20:42

标签: android android-intent

的活动:

String id = "blabla";  
 Intent musicService = new Intent(this, MusicPlayerService.class);
                musicService.putExtra("MUSIC_ID", id);
                startService(musicService);

服务:

@Override
    public int onStartCommand(Intent intent, int flags, int startId){
    super.onStartCommand(intent, startId, startId);

    Toast.makeText(getApplicationContext(), "Music Service Started", Toast.LENGTH_LONG).show();

    Bundle extras = intent.getExtras();
    String s = extras.getString("musicID");
    Toast.makeText(getApplicationContext(), "service start" + s, Toast.LENGTH_LONG).show();


     return START_STICKY;
    }

活动从未显示过,活动中的意图/启动服务线被100%命中。

我做错了什么?

4 个答案:

答案 0 :(得分:3)

您似乎错误输入了musicID

"MUSIC_ID"

你应该为这些做出常量变量:

public static final String MUSIC_ID_KEY = "MUSIC_ID";

这样你就可以减少错误。

答案 1 :(得分:0)

put方法中的代码必须与get方法中的代码匹配。尝试将getString更改为以下内容:

    String s = extras.getString("MUSIC_ID");

答案 2 :(得分:0)

试试这个,只需要在参数中显示的字符串:

 public void displayToast(final String str) {
    runOnUiThread(new Runnable () {
        @Override
        public void run() {
            Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();
        }             
    });
 }

答案 3 :(得分:0)

他们是两件事。 MUSIC_ID< - > musicID。尝试使用
静态最终字符串KEY_x =“MUSIC_ID”;
你不会忘记你的代码。