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

putExtra()Intentを介して、次のメソッドを使用して、フラグメントからサービスに文字列を渡すことができます。

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 に答える