繁体   English   中英

Java Android App MediaPlayer中的NullPointerException

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM