请帮忙,这只是我正在开发的一个简单的Android应用程序,它的目的是在每次单击按钮时播放声音......当我慢速单击按钮时它可以工作,但如果我单击它总是崩溃由于运行时错误,按钮速度很快 - NullPointerException!.....我不知道我做错了什么。
这是我的代码
公共(public)类 Main 扩展 Activity 实现 OnClickListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button e = (Button) findViewById(R.id.Button1);
e.setOnClickListener(this);
}
public void onClick(View v){
if(v.getId()==R.id.imageButton1){
final MediaPlayer i = MediaPlayer.create(Main.this, R.raw.sound);
i.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
i.release();
}
});
i.start();
}
}
}
最佳答案
这只是一个猜测,但在文档 here 中你会发现以下内容
public static MediaPlayer create (Context context, int resid)
... Returns a MediaPlayer object, or null if creation failed
这意味着您应该确保该行
final MediaPlayer i = MediaPlayer.create(Main.this, R.raw.sound);
不返回null
。
编辑:
如果 create(Context context, int resid)
失败,我真的不确定如何处理这种情况。但你必须这样做,因为甚至从文档中就可以清楚地看出它可能会发生。
要确定这确实是问题所在,只需忽略这种情况并从处理程序返回即可。 例如...
public void onClick(View v)
{
if(v.getId() == R.id.imageButton1)
{
final MediaPlayer i = MediaPlayer.create(Main.this, R.raw.sound);
if (i != null)
{
...
i.start();
}
}
}
关于java - Java Android 应用 MediaPlayer 中的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13332603/