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