Android ViewPager destroyItem()[位置1]不工作

Android ViewPager destroyItem()[位置1]不工作,android,android-viewpager,Android,Android Viewpager,首先,我想做的是,一个简单的视频程序,包含3页ViewPager,第一页有视频列表,第二页只有一个视频视图,第三页是另一个列表视图。该程序工作正常,但当我尝试在页面之间滑动时,视频并没有停止播放(应用程序默认在第1页启动,即videoview)。我尝试添加onClickListener来启动视频,这解决了程序启动时自动启动的问题。但是,当我更改页面时,它仍在播放 以下是页面启动部分: @Override public Object instantiateItem(ViewGrou

首先,我想做的是,一个简单的视频程序,包含3页ViewPager,第一页有视频列表,第二页只有一个视频视图,第三页是另一个列表视图。该程序工作正常,但当我尝试在页面之间滑动时,视频并没有停止播放(应用程序默认在第1页启动,即videoview)。我尝试添加onClickListener来启动视频,这解决了程序启动时自动启动的问题。但是,当我更改页面时,它仍在播放

以下是页面启动部分:

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View view;
        switch (position) {
            case 0: {
                // Inflate a new layout from our resources
                view = getActivity().getLayoutInflater().inflate(R.layout.activity_listed_videos,
                        container, false);
                // Add the newly created View to the ViewPager
                container.addView(view);
                list = (ListView) view.findViewById(R.id.list);
                GetVideoPosts getVideoPosts = new GetVideoPosts();
                getVideoPosts.execute();
                updateList();
                list.setAdapter(new CustomList(getActivity(), mVideoUrls, mVideoTitles));
                list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        try {
                            JSONObject job1 = mVideoData.getJSONObject("data");
                            JSONArray jsonPosts = job1.getJSONArray("items");
                            JSONObject post = jsonPosts.getJSONObject(position);
                            JSONObject url = post.getJSONObject("player");
                            String title = url.getString("default");
                            title = Html.fromHtml(title).toString();
                            Intent intent = new Intent(getActivity(), VideoViewActivity.class);
                            intent.putExtra("url", title);
                            startActivity(intent);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                });

                // Return the View
                return view;
            }
            case 1: {
                ((ViewPager)container).setCurrentItem(1);
                view = getActivity().getLayoutInflater().inflate(R.layout.activity_video_view,
                        container, false);
                container.addView(view);
                GetVideoPosts getVideoPosts = new GetVideoPosts();
                getVideoPosts.execute();
                updateList();
                final VideoView vv = (VideoView) view.findViewById(R.id.videoView);
                MediaController mediacontroller = new MediaController(
                        getActivity());
                mediacontroller.setAnchorView(vv);
                String videoUrl ="http://download.wavetlan.com/SVV/Media/HTTP/H264/Talkinghead_Media/H264_test1_Talkinghead_mp4_480x360.mp4";
                Uri video = Uri.parse(videoUrl);
                vv.setMediaController(mediacontroller);
                vv.setVideoURI(video);
                // Add the newly created View to the ViewPager

                container.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        showLoadingImageDialog();
                        vv.requestFocus();
                        vv.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                            public void onPrepared(MediaPlayer mp) {
                                pDialog.dismiss();
                                vv.start();
                            }
                        });
                    }
                });

                return view;
            }
            case 2:
                view = getActivity().getLayoutInflater().inflate(R.layout.pager_item,
                        container, false);
                // Add the newly created View to the ViewPager
                container.addView(view);

                // Retrieve a TextView from the inflated View, and update it's text
                TextView title = (TextView) view.findViewById(R.id.item_title);
                title.setText(String.valueOf(position + 1));

                // Return the View
                return view;
        }
        return null;
    }
我跳过位置1,但没有显示destroyItem函数日志


注意:如果您有任何其他关于显示视频的想法,我们将不胜感激。为了更好地理解,您可以将此应用程序视为Vine应用程序。

您可以在此处设置
mViewPager.setOffscreenPageLimit(0)
这样,当您离开该页面时,您的页面就会被破坏,从而也会破坏您的
视频视图。简单

你能更具体一点吗?因为我没有通过FragmentPager调用任何片段。所以我不能添加OnServibilityHint。请花点时间,检查我的代码仍然没有销毁,我可以听到视频播放的声音,而我滚动到另一个页面。。。感谢您的回答。因此,我认为您需要使用不同的
PagerAdapter
实现,您可以使用
setUserVisibilityHint()
方法停止
VideoView
12-20 3435-3435/SlidingTabsBasicFragment﹕ destroyItem() [position: 0]
12-20 3435-3435/SlidingTabsBasicFragment﹕ destroyItem() [position: 2]
12-20 3435-3435/SlidingTabsBasicFragment﹕ destroyItem() [position: 0]
12-20 3435-3435/SlidingTabsBasicFragment﹕ destroyItem() [position: 2]