如何将字符串从Fragments传递到android中的服务

时间:2012-10-26 14:23:04

标签: android android-intent android-service

我想将字符串从片段传递给服务。我试过setvalue和bind,但它适用于活动而不是startservice对吗? 什么是“ServiceConnection”,通过使用ServiceConnection可以传递字符串? 这是我开始服务的片段代码。

 **Solved **

我已将代码更改为此内容并且完美无缺

Intent intent = new Intent(getActivity(), myPlayService.class);
            Bundle b = new Bundle(); 
            b.putString("link", "http://94.23.154/bbc");  
            intent.putExtras(b);
            getActivity().startService(intent);

在服务中使用

public int onStartCommand(Intent intent, int flags, int startId) {
    // TODO Auto-generated method stub
    if(intent != null){
        Bundle bundle = intent.getExtras();
        link = bundle.getString("link");
           }

2 个答案:

答案 0 :(得分:5)

您可以通过Intent并使用putExtra()方法将字符串从Fragment传递到Service:

Intent intent = new Intent(getActivity(), myPlayService.class));
intent.putExtra("string param 1", "String for the Service");
getActivity().startService(intent);

在服务中,您将检索onStartCommand()中的字符串:

public int onStartCommand(Intent intent, int flags, int startId) {
    String stringFromFragment = intent.getStringExtra("string param 1");
    // TODO do something with the string
    startPlayer();
    return START_STICKY;
} 

答案 1 :(得分:-1)

在片段的OnAttach中编写代码

@Override
    public void onAttach(Context context) {
        super.onAttach(context);
        Intent i = new Intent(getActivity(), ServiceName.class);
        i.putExtra("key",value);
        getActivity().startService(i);
  }