1

活动:

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

4 回答 4

3

您似乎误输入了您的音乐 ID

"MUSIC_ID"

你应该为这些创建常量变量:

public static final String MUSIC_ID_KEY = "MUSIC_ID";

所以你得到的错误更少。

于 2013-08-13T15:23:43.030 回答
0

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

    String s = extras.getString("MUSIC_ID");
于 2013-08-13T15:23:29.407 回答
0

他们是两件事。MUSIC_ID <-> musicID 。尝试使用
static final String KEY_x = "MUSIC_ID";
你不会在你的代码中忘记它。

于 2013-08-13T15:45:21.337 回答
0

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

 public void displayToast(final String str) {
    runOnUiThread(new Runnable () {
        @Override
        public void run() {
            Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();
        }             
    });
 }
于 2013-08-13T15:42:24.730 回答