プログレスバーをサービスから閉じようとしていますが、強制終了エラーが表示されます。startservice onclick ボタンのメイン アクティビティにプログレスバーを作成しましたが、mediaplyer のリスナーを準備するときにそれを閉じたいと思います。サービスにUI関数を書くことはできないので、アクティビティに書きます。Main_acitivty object も試しました。pregressbar.dismiss(); しかし、強制終了エラーが表示されます。この問題の良い解決策。
編集:-プログレスバーを取得しましたが、準備が完了し、メディアプレーヤーが起動しようとしているときに、この行のために強制終了エラーが発生すると思います「vm.progressDialog.dismiss();」遊ぶ();
回答:-アクティビティをサービスにインポートし、アクティビティでプログレスバーを静的なものにすると正常に動作します。
ここに私のサービスがあり、メディアプレーヤーが初期化されています
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
mp = new MediaPlayer();
try {
showNoti();
final Main vm = new Main();
mp.setDataSource(link);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.prepareAsync();
mp.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
vm.progressDialog.dismiss();
mp.start();
b=true;
}
});
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
エラー
09-17 18:12:01.330: E/AndroidRuntime(6708): FATAL EXCEPTION: main
09-17 18:12:01.330: E/AndroidRuntime(6708): java.lang.NullPointerException
09-17 18:12:01.330: E/AndroidRuntime(6708): at com.android.twitter.myPlayService$1.onPrepared(myPlayService.java:53)
09-17 18:12:01.330: E/AndroidRuntime(6708): at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:1973)
09-17 18:12:01.330: E/AndroidRuntime(6708): at android.os.Handler.dispatchMessage(Handler.java:99)
09-17 18:12:01.330: E/AndroidRuntime(6708): at android.os.Looper.loop(Looper.java:137)