我正在编写一个简单的Android应用程序(主要是为了测试我在真实应用程序中需要使用的内容),我需要使用MediaPlayer播放声音。在这种情况下,我使用的是kalimba.mp3
(没有大写字母)。但是当我尝试运行应用程序时,它会因为空对象引用而立即崩溃。错误如下,我的代码也是如此。问题是,我没有看到任何问题,它在编辑我的代码时没有给我任何错误。如何阻止此错误?我之前从未使用过MediaPlayer。提前谢谢!
代码:
// Player of "kalimba.mp3"
private MediaPlayer kalimbaPlayer = MediaPlayer.create(this, R.raw.kalimba);
// Play/stop the sound
public void playSound(View view) { kalimbaPlayer.start(); }
public void stopSound(View view) { kalimbaPlayer.stop(); kalimbaPlayer.release(); }
错误:的
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
答案 0 :(得分:17)
this
可能是您的活动。在初始化字段时,活动可能还没有完全准备好。
相反,在Activity的onCreate()方法中初始化MediaPlayer。
答案 1 :(得分:0)
在班级中创建全局变量
public Resources mRes;
在此之后
@Override
Oncreate(Bundle saveInstance){
mRes = getActivity().getResources();
}
现在用户mRes对象获取资源.... 例如
mRes.getString(R.string.SEARCH);
答案 2 :(得分:-2)
你使用过onCreate
kalimbaPlayer = MediaPlayer.create(nameActivity.this,R.raw.kalimba);
下午。 nameActivity = nameActivity class