有人能告诉我为什么这个类在我的主要活动中调用时会返回一个致命的异常吗?
package com.b1ackjosh.kana;
import android.content.Context;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.widget.TextView;
public class SoundThread extends Thread implements Runnable, OnCompletionListener {
Thread t = null;
int place, lvl;
boolean tStatus = false;
Context context;
SoundThread(int l, int p, Context c) {
p = place;
c = context;
l = lvl;
};
public void run() {
MediaPlayer audioQuestion = MediaPlayer.create(context, QuestionArray.audioArray[lvl][place]);
audioQuestion.setOnCompletionListener(this);
audioQuestion.start();
};
public void pause() {
tStatus = false;
try {
t.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
t = null;
}
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.release();
}
}
这就是我在主要活动中运行它的方式:
public void playQuizAudio(final int i) {
new SoundThread(lvl, i, this).start();
}
我只是将一个整数传递给此方法,每次运行它时,我的应用程序都会失败并崩溃到主屏幕。这很烦人,但如果我在我的主要活动中包含相同的代码,它运行良好,但我认为我还有一些其他线程问题,这就是为什么我选择创建一个单独的类来管理它。此外,如果我使用音频中的静态链接,它也会失败,所以我知道它必须是上下文。对此的任何帮助将不胜感激。
这也是我从 LogCat 得到的:
04-12 03:52:43.981: E/AndroidRuntime(3129): FATAL EXCEPTION: Thread-98
04-12 03:52:43.981: E/AndroidRuntime(3129): java.lang.NullPointerException
04-12 03:52:43.981: E/AndroidRuntime(3129): at android.media.MediaPlayer.create(MediaPlayer.java:731)
04-12 03:52:43.981: E/AndroidRuntime(3129): at com.b1ackjosh.kana.SoundThread.run(SoundThread.java:23)