なぜ私の非同期タスクがnullを返すのですか?以前は完全に機能していました。私は間違って何をしていますか?My Asynctaskがnullを返す
私は新しい開発者です。この問題を解決する方法はあまり知られていません。
ここに私のコードです。
private class PlayAudioFileBg extends AsyncTask<String, Object, MediaPlayer> {
@Override
protected MediaPlayer doInBackground(String... params) {
try {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setDataSource(params[0]);
mMediaPlayer.prepare();
return mMediaPlayer;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(final MediaPlayer mediaPlayer) {
super.onPostExecute(mediaPlayer);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
mSeekBar.setProgress(0, true);
}else{
mSeekBar.setProgress(0);
}
mediaPlayer.start();
mSeekBar.setEnabled(true);
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if(repeatTimes != 0){
mediaPlayer.start();
}else{
releaseMediaPlayer();
}
}
});
ログキャット8月22日09:51:04.279 11359から11359/com.example.android.top10music E/AndroidRuntime:致命的な例外:メイン プロセス:com.example.android.top10music、 PID:11359 のjava.lang.NullPointerException:試みは、仮想メソッドを呼び出すために com.example.android.top10music.NarutoActivity $ PlayAudioFileBg.onPostExecuteでnullオブジェクト参照 で '無効 android.media.MediaPlayer.start()'( NarutoActivity.java:404) at com.example.android.top10music.NarutoActivity $ PlayAudioFileBg.onPostExecute(NarutoActivity.java:375) at android.os.AsyncTask.finish(AsyncTask.java:632) android.os.AsyncTask.access $ 600(AsyncTask。 Javaの:177) android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:645)android.os.Looper.loopでandroid.os.Handler.dispatchMessage(Handler.java:102) で (ルーパーで.java:135) android.app.ActivityThread.main(ActivityThread.java:5753) at java.lang.reflect.Method.invoke(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method .javaファイル: com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1405)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200で )で372)
"私の非同期タスクがnullを返す"ということを具体的に説明してください。 AsyncTaskは何も返さない。 'doInBackground()'が 'null'を返すことを意味するならば、例外をキャッチしてそこにスタックトレースを記録するので、LogCatをチェックしてください。 – CommonsWare
logcatを見て、あなたは例外を見つける必要があります。またはcatchブロックと印刷e.getMessage内部に置くのブレークポイントは、() –
は、ログの猫投稿 –