【发布时间】:2018-11-27 12:58:07
【问题描述】:
我在 OnItemClick 中创建了一个列表视图和 MediaPlayer。
listSongs.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Song song = mAdapter.getItem(position);
mPlayer = MediaPlayer.create(MainActivity.this, song.getmSongResourceId());
if (mPlayer != null) {
mPlayer.release();
}
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener () {
@Override
public void onCompletion(MediaPlayer mp) {
mPlayer.start();
mPlayer.pause();
controller.show(0);
}
});
mPlayer.start(); //error here
controller.show(0);
}
});
@Override
public void start() {
mPlayer.start();
}
@Override
protected void onStop() {
super.onStop();
mPlayer.pause();
controller.hide();
}
当点击项目活动时关闭。这是logcat:
java.lang.IllegalStateException
at android.media.MediaPlayer._start(Native Method)
at android.media.MediaPlayer.start(MediaPlayer.java:1228)
at com.....MainActivity$2.onItemClick(MainActivity.java:432)
at android.widget.AdapterView.performItemClick(AdapterView.java:314)
at android.widget.AbsListView.performItemClick(AbsListView.java:1162)
at java.lang.reflect.Method.invoke(Native Method)
MainActivity.java:432 是mPlayer.start();。
什么是IllegalStateException,如何解决?您可能会说我的帖子是 this 帖子重复,但我不确定如何将其解决方案应用于我的代码。
【问题讨论】:
-
你应该在完成后打电话给
release(),而不是在start()之前 -
@bwt,你的意思是在 onCompletion 方法中?
-
一旦你知道你将不再使用它。基本上,一旦发布了媒体播放器实例,您就无法对其进行任何操作
标签: android android-mediaplayer illegalstateexception