我有一个包含VideoView和其他几个视图的片段。删除4.0.4包含videoView的片段时出错
public class PlayerPane extends Fragment {
... // static variables
private ImageView imageView;
private ImageView gifView;
private VideoView videoView;
private WebView webView;
private PDFView pdfView;
private MyScrollTextView scrollTextView;
private MediaPlayer audioPlayer;
...
@Override
public void onDestroyView() {
if (videoView != null && videoView.isPlaying()) {
LOGGER.info("Stopping videoView");
videoView.stopPlayback();
videoView.suspend();
videoView = null;
}
super.onDestroyView();
}
每当我删除此片段,而在视频播放,IllegalStateException异常被抛出仅限搭载Android 4.0.4(与上述版本4.0.4没有问题)。
以下是例外:
java.lang.IllegalStateException
at android.media.MediaPlayer._reset(Native Method)
at android.media.MediaPlayer.reset(MediaPlayer.java:1236)
at android.widget.VideoView.release(VideoView.java:549)
at android.widget.VideoView.access$2300(VideoView.java:49)
at android.widget.VideoView$6.surfaceDestroyed(VideoView.java:537)
at android.view.SurfaceView.updateWindow(SurfaceView.java:581)
at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:290)
at android.view.View.dispatchDetachedFromWindow(View.java:9823)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2266)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3588)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3568)
at android.view.ViewGroup.removeView(ViewGroup.java:3516)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:951)
at android.app.FragmentManagerImpl.removeFragment(FragmentManager.java:1123)
at android.app.BackStackRecord.run(BackStackRecord.java:592)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1382)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
这是我如何删除片段:
getFragmentManager.beginTransaction().remove(fragmentToBeRemoved).commit();
是什么原因造成这种IllegalStateException异常,如何解决这个问题?任何指向解决方案的东西都会有很大的帮助。
为什么要删除的片段,我的意思是,你可以简单地与其他片段 –
你应该提供一个[MCVE]希望找到你的问题的一个明确的答案取代。在这里,我们只有破坏部分。 – AxelH