1

我想将字符串从片段传递给服务。我尝试了 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");
           }
4

2 回答 2

6

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

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;
} 
于 2012-10-26T15:59:52.163 回答
-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);
  }
于 2016-10-18T08:43:41.687 回答