2016-03-21 5 views
1

Ich habe ein seltsames Problem, und ich weiß nicht, wie man es löst. Ich möchte eine Verbindung von meinem laufenden Dienst erhalten. Ich mache diese innere Klasse mit Methode:Kann nicht zu Service

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

Dann beginne ich Service und schaffen Verbindung mit ihm:

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

Und Compiler auf dieser Linie sagen pms = ((PlayMusicService.PlayMusicServiceBinder)service).getService();, dass: "Kann nicht gegossen werden"

Ich habe viele gesehen Beispiele, wo solche Aktionen durchgeführt wurden, und niemand beschwerte sich über die Bugs

Hilf mir bitte.

Danke.

+0

Sieht so aus, als ob Sie versuchen, einen Dienst für eine Sammelmappe zu erstellen. Lies ich das richtig? – duffymo

+0

Binder zu einem Service, ich denke, – DZordered

+0

Ist Binder eine Art von Service? Wenn nicht, können Sie keine Sammelmappe in einen Service umwandeln. Das ist klassisch OO IS-A. – duffymo

Antwort

0

Haben Sie diesen Code in der PlayMusicService-Klasse hinzugefügt?

@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, arbeiten :) Vielen Dank! – DZordered