2016-05-05 11 views
1

Ich habe eine Frage zum Bindungsdienst. Ich habe Elternaktivität und mehrere Fragmente, ich bin bindend und entbinde Dienst mit Aktivität, kann ich jetzt Zugang zu diesem Dienst in Fragment bekommen? Ich muss ServiceConnection in Fragmenten verwenden.Gebundener Dienst mit Aktivität mit Fragment

+0

Mögliches Duplikat von http://stackoverflow.com/questions/14124632/how-doi-ibind-a -service-from-a-fragment –

+0

Service an den Host binden Aktivität und Fragmente sollten mit dem Service arbeiten, dachte die Aktivität mit Hilfe von Rückrufen. –

Antwort

0

Ja, könnten Sie Dienste Tätigkeits Eltern Zugang in Ihrem Fragmente von etwas wie folgt aus:

getActivity().getMyService() 
+0

ich habe connectionService = new Intent hinzugefügt (getApplicationContext(), XMPPService.class); bindService (connectionService, this, Context.BIND_AUTO_CREATE); in meiner Aktivität .... was ist getMyService() – Richa

+0

@Richa getMyService() wird Ihre Referenz zu dem Dienst sein, den Sie lokal erstellt haben. Weitere Informationen finden Sie hier [link ] (http://developer.android.com/reference/android/app/Service.html#LocalServiceSample). Hoffe das wird deine Anfrage klären. – Anurag

0

=========== in Sie Aktivität ======== =========

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; 
     } 
    }; 

================= in Ihrem Fragment =============

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

dies ist, was ich bereits getan habe. Aber wir können den code in activity nur halten und auf ServiceConnection zugreifen. Weil das Binden und Lösen in jedem Fragment keine gute Idee ist – Richa

+0

Ich habe meine Antwort bearbeitet, es wird funktionieren .. –

Verwandte Themen