![](/img/trans.png)
[英]NullPointerException with android 2.3.3 mediaplayer
[英]NullPointerException in Java Android App MediaPlayer
请帮助,这只是我正在开发的一个简单的android应用,它的意思是每次您单击按钮时都会播放声音...。当我缓慢地单击按钮时,它可以工作,但是如果在以下位置单击按钮,则总是崩溃由于运行时错误而快速-NullPointerException!.....我不知道我在做什么错。
这是我的密码
公共类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();
}
}
}
public static MediaPlayer create (Context context, int resid)
...返回MediaPlayer对象;如果创建失败,则返回null
这意味着您应确保该行
final MediaPlayer i = MediaPlayer.create(Main.this, R.raw.sound);
不返回null
。
编辑:
我真的不确定如果create(Context context, int resid)
失败了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();
}
}
}
这样尝试。
public class Blah extends Activity implements OnClickListener {
MediaPlayer mp;
@Override
public void onCreate(Bundle b)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button e = (Button) findViewById(R.id.Button1);
mp = MediaPlayer.create(R.raw.match);
mp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
i.release();
}
});
e.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mp.seekTo(0);
mp.start();
}
});
}
}
我有同样的问题
我的解决方案是使用LAME mp3编码器重新编码mp3文件
您可以使用以下程序: http : //www.freac.org/index.php/en/downloads-mainmenu-33
显然,Android对mp3编解码器非常挑剔
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.