android - 如何销毁一个 fragment 然后创建一个新 fragment ?

标签 android android-fragments video

我有一个播放视频的 fragment ,我启动了我的应用程序并且一切顺利,但是当我按下后退按钮并选择另一个视频文件播放时,我的 View 不播放视频。

VideoActivity

    @Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_video);
    A=this;
    th = Thread.currentThread();

    // OBTER URL DO VÍDEO
    Bundle extras = getIntent().getExtras();

    if (extras != null)
        _videoURL = extras.getString("CAMINHO_ARQUIVO");

    if (savedInstanceState == null)
    {
        getFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();       
    }
}
public static class PlaceholderFragment extends Fragment
{
    static private final int BUFFER_SIZE = 700;// Mb
    static private final int NUM_FILES = 20;// Count files in cache dir

    public PlaceholderFragment()
    {}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View rootView = inflater.inflate(R.layout.fragment_video, container, false);
        frame1 = rootView.findViewById(R.id.frame1);
        textureView = (VideoPlayer) rootView.findViewById(R.id.textureView1);
        textProgress = (TextView) rootView.findViewById(R.id.textView1);

        textureView.setVideoPath(_videoURL);
        textureView.setMediaController(new mediac(A, frame1));
        textureView.setSeekListener(new VideoPlayer.SeekListener()
        {
            @Override
            public void onSeek(int msec)
            {
                //if (proxy != null)
                //{
                    //proxy.seek = true;
                //} // more speed for seeking
            }

            @Override
            public void onSeekComplete(MediaPlayer mp)
            {}
        });
        textureView
                .setOnPreparedListener(new MediaPlayer.OnPreparedListener()
                {
                    @Override
                    public void onPrepared(final MediaPlayer mp)
                    {
                        textureView.start();
                    }
                });
        return rootView;
    }

最佳答案

据我在您的代码中所见,如果 savedInstanceState 为空,您将创建 fragment 。因此,如果 Activity 没有被正确销毁,您将使用相同的 fragment 。

相反,从您的 onCreate() 中删除此部分,并在您每次导航到您的 VideoActivity 时创建 fragment 。

关于android - 如何销毁一个 fragment 然后创建一个新 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31570482/

相关文章:

css - Android 下拉(选择)CSS

java - 方法不必要地被调用?

android - 如何使用 MotionLayout 调整 TextView 的大小

android - 如何处理 Fragment 中的 onBackPressed()?

android - 删除页面后 ViewPager 显示错误内容

video - ffmpeg 将多个文件从 avi dv 视频 (dvsd) 转换为 avi h.264 + mp3(mp4)

android - 这个内核源码能用吗?

android - fragment 抛出时在 Activity 中捕获异常

iOS 退出全屏后如何触发视频继续播放?

c - 从 OpenGL C 程序制作视频