Я вызываю метод stop () в моем экземпляре медиаплеера, и он показывает «Попытка вызвать виртуальный метод void android.media.MediaPlayer.stop ()» для ссылки на нулевой объект », что означает, что объект медиаплеера имеет значение null, но когда Я пишу это как if (mediaplayer! = Null) stop (); это работает хорошо. Но если объект фактически нулевой, это условие не должно выполняться. Кто-нибудь может объяснить, что происходит?
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_hello_moon, container, false);
Button play = v.findViewById(R.id.play);
Button stop = v.findViewById(R.id.stop);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mp == null) {
mp = MediaPlayer.create(getActivity(), R.raw.one_small_step);
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.stop();
}
});
mp.start();
}
else {
mp.stop();
try {
mp.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mp.start();
}
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mp != null) {
mp.release();
mp = null;
}
}
});
return v;
}
//this is not working
@Override
public void onDestroy() {
super.onDestroy();
mp.stop();
}
//this works fine
@Override
public void onDestroy() {
super.onDestroy();
if(mp != null)
mp.stop();
}