Warum gibt meine Async-Aufgabe null zurück? Es hat perfekt vorher funktioniert. Was mache ich falsch?Meine Asynctask gibt null zurück
Ich bin ein neuer Entwickler, ich habe nicht viel Wissen, wie man das behebt.
Hier ist mein Code.
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();
}
}
});
Log Cat 08-22 September: 51: 04.279 11.359 bis 11.359/com.example.android.top10music E/Android Runtime: fatal EXCEPTION: main Prozess: com.example.android.top10music, PID: 11359 java.lang.NullPointerException: Versuch zum Aufruf virtuelle Methode 'Leere android.media.MediaPlayer.start()' auf einer null-Objekt Referenz bei com.example.android.top10music.NarutoActivity $ PlayAudioFileBg.onPostExecute (NarutoActivity.java:404) bei com.beispiel.android.top10music.NarutoActivity $ PlayAudioFileBg.onPostExecute (NarutoActivity.java:375) bei android.os.AsyncTask.finish (AsyncTask.java:632) bei android.os.AsyncTask.access $ 600 (AsyncTask. java: 177) bei android.os.AsyncTask $ InternalHandler.handleMessage (AsyncTask.java:645) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android.os.Looper.loop (Looper .java: 135) bei android.app.ActivityThread.main (ActivityThread.java:5753) bei java.lang.reflect.Method.invoke (Mutter Methode) bei java.lang.reflect.Method.invoke (Methode .java: 372) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1405) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1200)
Bitte erläutern Sie im Detail, was Sie mit "meine asynchrone Aufgabe, die null zurückgibt" meinen. Eine 'AsyncTask' gibt nichts zurück. Wenn Sie meinen, dass 'doInBackground()' 'null' zurückgibt, überprüfen Sie LogCat, da Sie eine Ausnahme abfangen und den Stack-Trace dort protokollieren. – CommonsWare
In Logcat suchen, sollten Sie eine Ausnahme finden. Oder setzen Haltepunkt in catch-Block und Druck e.getMessage() –
posten Sie Ihre Log-Katze –