Google Play上的用户将我的应用评为一颗星,因为它在点击按钮时崩溃了。他正在使用HTC Desire 500.我检查了他的LogCat并说:
java.lang.NullPointerException
at com.lifeapps.appquiz.SixthImageLogo$4.onClick(SixthImageLogo.java:333)
at android.view.View.performClick(View.java:4107)
at android.view.View$PerformClick.run(View.java:17160)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:155)
at android.app.ActivityThread.main(ActivityThread.java:5536)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1074)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:841)
at dalvik.system.NativeStart.main(Native Method)
在第333行有MediaPlayer。我不知道它是什么导致了这个问题,因为我无法在真实设备上检查它,因为它可以在其他所有设备上运行(我当然也是如此)。
这是OnClick中的MediaPlayer代码:
MediaPlayer mediaPlayer = MediaPlayer.create(SixteenthImageLogo.this, R.raw.twinkle);
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.release();
}
});
错误在mediaPlayer.start();
上原始文件是.mp3和308.882字节。
谢谢。
答案 0 :(得分:0)
根据文档,create()
方法可以返回null。例如,当媒体播放器实例太多时(可能您没有释放调用release()
方法的资源,或者您创建了太多实例)。所以你必须做一个检查:
MediaPlayer mediaPlayer = MediaPlayer.create(SixteenthImageLogo.this, R.raw.twinkle);
if (mediaPlayer == null)
return; //error handling here
Bella app;)