Java Android应用程序MediaPlayer中的NullPointerException
请帮助这只是我正在开发的一个简单的android应用程序,它意味着每次单击按钮时都会播放声音…当我以较慢的速度单击按钮时,它会工作,但如果我以较快的速度单击按钮,则会因运行时错误而崩溃-NullPointerException!。。。。。我不知道我做错了什么 这是我的密码 公共类主扩展活动实现OnClickListener{Java Android应用程序MediaPlayer中的NullPointerException,java,android,eclipse,nullpointerexception,android-mediaplayer,Java,Android,Eclipse,Nullpointerexception,Android Mediaplayer,请帮助这只是我正在开发的一个简单的android应用程序,它意味着每次单击按钮时都会播放声音…当我以较慢的速度单击按钮时,它会工作,但如果我以较快的速度单击按钮,则会因运行时错误而崩溃-NullPointerException!。。。。。我不知道我做错了什么 这是我的密码 公共类主扩展活动实现OnClickListener{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedIn
@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();
}
}
}这只是一个猜测,但在文档中您会发现以下内容
publicstaticmediaplayer创建(上下文,intresid)
...
返回MediaPlayer对象,如果创建失败,则返回null
这意味着您应该确保
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();
}
}
}
这样试试
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();
}
});
}
}
我也有同样的问题
我的解决方案是用蹩脚的mp3编码器重新编码mp3文件
您可以使用以下程序:
显然android对mp3编解码器相当挑剔这一行->i.setOnCompletionListener(新的OnCompletionListener(){请在尝试使用之前阅读文档,谢谢,但是关于如何使用它有什么想法吗?…因为我几乎不知道该怎么做…再次感谢!如果
create(Context-Context,int-resid),我真的不知道如何处理这种情况
失败。这是您的决定。我已编辑了我的答案。顺便说一句,在对处理程序的任何新调用中,可能不需要创建新的MediaPlayer
实例。谢谢,我以前尝试过if(I!=null)声明中,它处理了nullPointerException错误,但创建了一个新错误“无法创建媒体播放器”,该错误会阻止程序在几次单击后输出声音……也许我应该第四次查看Android媒体播放器文档,看看我是否遗漏了什么如果我的视频不在原始文件夹?谢谢,将尝试您的方法并立即回复您再次感谢,我刚刚尝试了您的方法,它解决了NullPointerException错误,但在mp.seekTo(0)行创建了一个名为“IllegalStateException”的新错误