2016-05-05 1 views
1

バインディングサービスについて質問があります。私は親アクティビティーといくつかのフラグメントを持っています。私はアクティビティーを持つサービスをバインドおよびバインド解除しています。今ではそのサービスにフラグメントでアクセスできますか?私は、フラグメントでServiceConnectionを使用する必要があります。フラグメント付きアクティビティを持つバインドされたサービス

+0

可能な複製http://stackoverflow.com/questions/14124632/how-do-i-bind-a -service-from-a-fragment –

+0

ホストへのサービスのバインドアクティビティとフラグメントは、コールバックの助けを借りてアクティビティと考えられるサービスで動作するはずです。 –

答えて

0

はい、あなたはこのようなもので、あなたのフラグメント内の親アクティビティのサービスにアクセスすることができます:あなたの活動の

getActivity().getMyService() 
+0

私はconnectionService = new Intent(getApplicationContext()、XMPPService.class)を追加しました。 私のアクティビティで.... getMyService()とは何ですか? – Richa

+0

@Richa getMyService()は、あなたがローカルで作成したサービスへの参照になります。ここで詳細を見つけることができます[link ](http://developer.android.com/reference/android/app/Service.html#LocalServiceSample)。これがあなたの質問を明確にすることを願っています。 – Anurag

0

=========== ========あなたのフラグメント=============

で=========

callbackFragmentServiceConnection callbackfragment; 
     public interface callbackFragmentServiceConnection{ 
      public void servicefun(MusicPlayService musicPlayService); 
     } 

     public void registerClientFragment(Fragment fragment){ 

      this.callbackfragment = (callbackFragmentServiceConnection)fragment; 

     } 

/** Defines callbacks for service binding, passed to bindService() */ 
    private ServiceConnection mConnection = new ServiceConnection() { 

     @Override 
     public void onServiceConnected(ComponentName className, 
             IBinder service) { 

      mBound = true; 


      callbackfragment.servicefun(musicPlayService); 



     } 

     @Override 
     public void onServiceDisconnected(ComponentName arg0) { 
      mBound = false; 
     } 
    }; 

=================

public class FragmentLibraryTrack extends Fragment implements 

    MainActivity.callbackFragmentServiceConnection { 


     MainActivity mainActivity; 
    @Override 
     public void onAttach(Context context) { 
      super.onAttach(context); 
      mainActivity= (MainActivity) context; 


     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 
      mainActivity.registerClientFragment(this); 

    } 

    @Override 
     public void servicefun(MusicPlayService musicPlayService) { 
      Log.e("reached sucessfully","yes"); 
     } 

    } 
+1

これは私がすでに行ったことです。しかし、私たちはServiceConnection上でのみアクティビティとacessにコードを保持しません。バインディングとバインドはすべてのフラグメントで良いのではないので、 – Richa

+0

私は私の答えを編集して、それは動作します.. –

関連する問題