尝试在空对象引用上调用虚拟方法 'boolean android.media.MediaPlayer.isPlaying()'
Attempt to invoke virtual method 'boolean android.media.MediaPlayer.isPlaying()' on a null object reference
我正在尝试使用 phone 的后退按钮停止播放音乐。当有音乐播放时它会起作用但是returns这个错误当没有音乐播放时尝试在空对象引用上调用虚拟方法boolean android.media.MediaPlayer.isPlaying()
。
这是我的代码
public void play_nature(View g){
natureMP = new MediaPlayer();
try {
natureMP.setDataSource("https://firebasestorage.googleapis.com/v0/b/capstone-katugna-001.appspot.com/o/Relax%201%20Minute%20-%20Rainforest%20Sounds%20Waterfall%20and%20Rain.mp3?alt=media&token=d01bd960-9de5-4835-a9ef-a4d997fad3f6");
natureMP.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
natureMP.prepare();
} catch (IOException e) {
e.printStackTrace();
}
pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
natureMP.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.pause();
}
});
natureMP.pause();
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
if(natureMP.isPlaying() == true){
natureMP.stop();
}
else if(!natureMP.isPlaying()){
Intent i = new Intent(getApplicationContext(), MusicActivity.class);
startActivity(i);
}
}
natureMP
正在 play_nature()
中初始化,除非有一些保证方法总是在调用 onDestroy() 之前被调用,否则您应该在 [=13] 中添加一个 null 检查=]方法。
if(natureMP != null) {
if(natureMP.isPlaying()){
natureMP.stop();
}
else{
Intent i = new Intent(getApplicationContext(), MusicActivity.class);
startActivity(i);
}
}
我正在尝试使用 phone 的后退按钮停止播放音乐。当有音乐播放时它会起作用但是returns这个错误当没有音乐播放时尝试在空对象引用上调用虚拟方法boolean android.media.MediaPlayer.isPlaying()
。
这是我的代码
public void play_nature(View g){
natureMP = new MediaPlayer();
try {
natureMP.setDataSource("https://firebasestorage.googleapis.com/v0/b/capstone-katugna-001.appspot.com/o/Relax%201%20Minute%20-%20Rainforest%20Sounds%20Waterfall%20and%20Rain.mp3?alt=media&token=d01bd960-9de5-4835-a9ef-a4d997fad3f6");
natureMP.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
natureMP.prepare();
} catch (IOException e) {
e.printStackTrace();
}
pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
natureMP.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.pause();
}
});
natureMP.pause();
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
if(natureMP.isPlaying() == true){
natureMP.stop();
}
else if(!natureMP.isPlaying()){
Intent i = new Intent(getApplicationContext(), MusicActivity.class);
startActivity(i);
}
}
natureMP
正在 play_nature()
中初始化,除非有一些保证方法总是在调用 onDestroy() 之前被调用,否则您应该在 [=13] 中添加一个 null 检查=]方法。
if(natureMP != null) {
if(natureMP.isPlaying()){
natureMP.stop();
}
else{
Intent i = new Intent(getApplicationContext(), MusicActivity.class);
startActivity(i);
}
}