在非活动类中添加mediaplayer

时间:2013-02-02 09:46:13

标签: android class nullpointerexception android-mediaplayer

我在我的简单安卓游戏中有两个类:myBaseObject,myMissile ...我希望用Mediaplayer添加声音myMissile类。

public class myBaseObject {
    MediaPlayer shoot;
    Context context;

    // ...

    public void myShoot()
    {
        shoot = MediaPlayer.create(context, R.raw.laser_effect);
        shoot.setVolume(100,100);       
        shoot.start();
    }
}


// .......

public class myMissile extends myBaseObject {


    public Missile( Bitmap bitmap, float x, float y, double velocity,
        double direction) {

        //...

        myShoot();
    }

}

在与活动类开始游戏后,ı在媒体播放器上看到NullPointerException ..并且游戏崩溃......怎么能解决这个问题?我尝试了很多方法..但我无法解决..

这是我的LogCat 02-02 12:37:43.496:E / AndroidRuntime(15009):at com.mycorp.myapp.myMissile。(myMissile.java:41)

02-02 12:37:43.496:E / AndroidRuntime(15009):at com.mycorp.myapp.MissileHandler.update(MissileHandler.java:75)

02-02 12:37:43.496:E / AndroidRuntime(15009):at com.mycorp.myapp.GameEngine.update(GameEngine.java:159)

02-02 12:37:43.496:E / AndroidRuntime(15009):at com.mycorp.myapp.GameThread.run(GameThread.java:51)

02-02 12:38:32.811:I / Process(15009):发送信号。 PID:15009 SIG:9

1 个答案:

答案 0 :(得分:0)

根据您的问题,很明显您没有传递您的活动背景。这就是为什么它会给你nullpointer异常。

像beloe一样修改你的代码可以帮到你

public class myBaseObject {
    MediaPlayer shoot;
    Context context;

     public void myShoot(Context ctx){
            this.context = ctx;
            shoot = MediaPlayer.create(context, R.raw.laser_effect);

            shoot.setVolume(100,100);

            shoot.start();

            }
}

public class myMissile extends myBaseObject {

//Context ctx
  public Missile( Bitmap bitmap, float x, float y, double velocity,
    double direction) {
.
.
.


   myShoot(this);

  }