2016-03-21 20 views
1

Garip bir problemim var ve nasıl çözeceğimi bilmiyorum. Çalışan servisimden bağlantı istiyorum. Ben yöntemiyle bu iç sınıf olun:Servis için yayınlanamıyor

public class PlayMusicServiceBinder extends Binder{ 
    public PlayMusicService getService(){ 
     return PlayMusicService.this; 
    } 
} 

Sonra ben hizmetini başlatmak ve onunla bağlantı oluşturmak:

private PlayMusicService pms 

startService(playServiceIntent.putExtra("songs", songs).putExtra("currentPosition", currentPosition).putExtra("path", path)); 
    serviceConnection = new ServiceConnection() { 
     @Override 
     public void onServiceConnected(ComponentName name, IBinder service) { 
      pms = ((PlayMusicService.PlayMusicServiceBinder)service).getService(); 
     } 

     @Override 
     public void onServiceDisconnected(ComponentName name) { 
      pms = null; 
     } 
    }; 

    onBind(); 

onBind():

public void onBind(){ 
    this.bindService(new Intent(this, PlayMusicService.class),serviceConnection, Context.BIND_AUTO_CREATE); 
} 

Ve derleyici bu hatta söylemek pms = ((PlayMusicService.PlayMusicServiceBinder)service).getService();, bu: "Döküm edilemiyor"

Çok gördüm Bu tür eylemlerin yapıldığı ve kimsenin hatalar hakkında şikâyette bulunmadığı örnekler

Lütfen bana yardım edin.

Teşekkürler.

+0

Bir Bağlayıcıya Hizmet vermeye çalıştığınız anlaşılıyor. Bunu doğru okudum mu? – duffymo

+0

Bir Hizmete Bağ, sanırım – DZordered

+0

Binder bir tür Hizmet mi? Değilse, o zaman bir Hizmet'e bir Binder atayamazsınız. Bu klasik OO IS-A. – duffymo

cevap

0

Bu kodu PlayMusicService sınıfına eklediniz mi?

@Override 
public IBinder onBind(Intent intent) { 
    return mBinder; 
} 

@Override 
public boolean onUnbind(Intent intent) { 

    return super.onUnbind(intent); 
} 

private final IBinder mBinder = new PlayMusicServiceBinder(); 
+0

Omg, çalışıyor :) Çok teşekkür ederim! – DZordered