2016-03-21 6 views
1

私は奇妙な問題があり、解決方法はわかりません。 実行中のサービスから接続を取得します。 私はこの方法で、この内部クラスを作る:サービスにキャストできません

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

その後、私はサービスを開始し、それとの接続を作成します。

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

およびコンパイラこの行に言いますpms = ((PlayMusicService.PlayMusicServiceBinder)service).getService();:「キャストできません」

私は多く見ましたそのような行為が実施された例、誰もそのバグに不平を言う人はいませんでした

助けてください。

ありがとうございました。

+0

サービスをバインダーにキャストしようとしているようです。それを正しく読んでいますか? – duffymo

+0

サービスへのバインダー – DZordered

+0

バインダーはサービスの一種ですか?そうでなければ、バインダーをサービスにキャストすることはできません。それは古典的なOO IS-Aです。 – duffymo

答えて

0

このコードをPlayMusicServiceクラスに追加しましたか?

@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、働く:) ありがとうございました! – DZordered

関連する問題