我正在编写一个小型练习应用程序,当按下按钮时会播放声音剪辑。在我之前的代码中,这相当于创建了一个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();
}
}
}
```
但是现在当我运行应用程序时,点按该按钮时应用程序崩溃了。我哪里出错了?
答案 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。