似乎
MediaPlayer无法创建,该
create()方法返回了
null指针。在官方文档说,发生这种情况时,创建失败,没有进一步的细节。
您说过,当您连续单击几次导致该方法被调用的按钮时,就会发生这种情况。这可能是由于非重入问题。
您应该尝试
MediaPlayer用一个标志来围绕创建和使用,以防止重新进入:
public void falseAnswerPoints() { if (!mPlayingSound) { mPlayingSound = true; MediaPlayer playError = MediaPlayer.create(QuizActivity.this, R.raw.error); playError.start(); }}mPlayingSound成为播放
privateboolean器的初始化成员,
false并且
false一旦
MediaPlayer播放完成,您将重置为该成员(使用就
public voidsetonCompletionListener (MediaPlayer.OnCompletionListenerlistener)可以了,尽管我不确定在异常或预期的播放终止时是否调用它)。
编辑 :有一个NullPointerException,所以有堆栈跟踪。要捕获堆栈跟踪,仅在调试中(以下代码不适合发布),您可以执行以下操作:
public void falseAnswerPoints() { try { MediaPlayer playError = MediaPlayer.create(QuizActivity.this, R.raw.error); playError.start(); } catch (NullPointerException e) { // Set a breakpoint there to inspect the state of your app // Then rethrow the exception to have it logged, and why not // log extra info. }}


