私は奇妙な問題があり、解決方法はわかりません。 実行中のサービスから接続を取得します。 私はこの方法で、この内部クラスを作る:サービスにキャストできません
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();
:「キャストできません」
私は多く見ましたそのような行為が実施された例、誰もそのバグに不平を言う人はいませんでした
助けてください。
ありがとうございました。
サービスをバインダーにキャストしようとしているようです。それを正しく読んでいますか? – duffymo
サービスへのバインダー – DZordered
バインダーはサービスの一種ですか?そうでなければ、バインダーをサービスにキャストすることはできません。それは古典的なOO IS-Aです。 – duffymo