NullPointerException异常Java中的Andr​​oid应用程序的MediaPlayer [英] NullPointerException in Java Android App MediaPlayer

查看:297
本文介绍了NullPointerException异常Java中的Andr​​oid应用程序的MediaPlayer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

帮助,请这只是一个简单的Andr​​oid应用我发展,它的意思是说你按一下按钮,每次播放声音....当我点击速度缓慢的按钮,它的工作原理,但总是如果我点击崩溃在快节奏,由于运行时错误按钮 - !NullPointerException异常.....我不知道我做错了。

HELP please this is just a simple android app I am developing, it's meant to play a sound every time you click the button....it works when I click the button at a slow pace, but always crashes if I click the button at a fast pace due to a runtime error - NullPointerException!.....I don't know what I am doing wrong.

这是我的code

公共类主要活动扩展实现OnClickListener {

public class Main extends Activity implements 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();  
    }       

}

}

推荐答案

它只是一种猜测,但文件中的这里你会发现下面的

Its only a guess but in the documentation here you will find the following

公共静态创建的MediaPlayer(上下文的背景下,INT渣油)
  ...
  返回一个MediaPlayer对象,或者为null,如果创建失败

public static MediaPlayer create (Context context, int resid) ... Returns a MediaPlayer object, or null if creation failed

这意味着你应该确保该行

This means you should make sure that the line

final MediaPlayer i = MediaPlayer.create(Main.this, R.raw.sound);

不返回

编辑:

林真的不知道该如何处理,如果 失败的情况下创建(上下文的背景下,INT渣油)。但是,你所要做的,因为它甚至从文档非常清楚,它可能发生。

Im really not sure how to handle the situation if create(Context context, int resid) is failing. But you have to do, because it is even from the documentation very clear that it can happen.

要肯定这是真的只是忽略这种情况和处理程序返回的问题。
例如...

To be sure this is really the problem just ignore this case and return from your handler. For example...

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();
        }
    }       
}

这篇关于NullPointerException异常Java中的Andr​​oid应用程序的MediaPlayer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆