启动/停止媒体时,Android应用程序崩溃

时间:2016-01-27 19:30:22

标签: java android

我正在编写一个小型练习应用程序,当按下按钮时会播放声音剪辑。在我之前的代码中,这相当于创建了一个MediaPlayer对象,并调用了mp.start()来启动音频。 这有效,但现在我希望只有当没有声音播放时才能播放相同的按钮。如果正在播放声音,请停止播放音频。播放/停止按钮。 我尝试使用以下代码执行此操作: ```

public class MainActivity extends Activity {
MediaPlayer mp; 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    public void goButtonClicked(View v) {
if(mp == null) {
    MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.wordt);
}
    if(mp.isPlaying()) {
mp.stop();
mp.release();
} 
    else {
mp.start();
    }
}
}
``` 

但是现在当我运行应用程序时,点按该按钮时应用程序崩溃了。我哪里出错了?

2 个答案:

答案 0 :(得分:0)

你没有初始化你的第一个mp对象,所以你看到nullPointerException, 你可以删除第二个mp对象

答案 1 :(得分:0)

只需像这样更改您的代码,

public void goButtonClicked(View v) {
    if(mp == null) {
        mp = MediaPlayer.create(getApplicationContext(), R.raw.wordt);
    }
    ....
}

这里发生的是,MediaPlayer mp = ...表示您在 if 条件下创建局部变量。但是你的字段变量仍然是null。当应用程序执行第二个 if 条件时,它会抛出NullPointerException。