在FragmentStatePagerAdapter Android中显示视图时通知

时间:2018-06-25 01:08:09

标签: android fragmentstatepageradapter

我正在尝试创建类似Instagram故事的幻灯片。
我写了一些代码,一切正常。我正在使用! 更换幻灯片。我想防止在幻灯片为视频类型时更改幻灯片,它会停止线程直到加载视频后再加载视频,然后再次启动处理程序线程。检查代码以获得更好的理解。

这是我的代码。

Handler.postDelay

这是我更改幻灯片的方式。

private class StorySlidePagerAdapter extends FragmentStatePagerAdapter {
    public StorySlidePagerAdapter(FragmentManager fm) {
        super(fm);
        Log.i("StoryActivityDebug", "StorySlidePagerAdapter constructor");
    }

    @Override
    public Fragment getItem(int position) {
        Log.i("StorySlideDebug", "getItem position " + position);
        StorySlide storySlide = StorySlide.create(position);
        storySlide.setOnStoryLoad(StoryActivity.this);
        return storySlide;
    }


    @Override
    public int getCount() {
        return NUM_STORIES;
    }
}

这里是 StorySlide

    updateStory = new Runnable() {
        @Override
        public void run() {

            if (killThread)
                return;

                mPager.setCurrentItem(mPager.getCurrentItem() + 1);
        }
    };
    handler.postDelayed(updateStory, slideChangingTime);

如果故事幻灯片类型为视频,则停止 public class StorySlide extends Fragment { // other code @Override public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // other code // storySlides is list of object contain info about story if( storySlides.getType == VIDEO ) slideInterface.onKillThread(true); // it will stop the thread } @Override public void onVideoPrepare(){ slideInterface.startThread() } } 线程以更改下一张幻灯片,并等待直到准备好视频后再准备幻灯片,然后再次开始更改幻灯片。它工作正常,但问题出在updateStory

FragmentStatePagerAdapter已经创建了至少一个或两个FragmentStatePagerAdapter,可能是为了获得更好的性能。如果您在第一张幻灯片上,它已经为您创建了下一张幻灯片,但仅在您设置fragments
时显示 您可以通过查看日志进行检查。
这种行为给我带来了问题。例如,如果第一张幻灯片是图像,第二张幻灯片是视频。它同时创建两者,因为当幻灯片是视频时,它将阻止线程更改幻灯片直到视频加载。由于只有在第二张幻灯片中没有加载视频之前,第一张幻灯片才会更改。
我要换第一张幻灯片,然后再放第二张幻灯片,直到视频加载完毕。

请让我知道我在哪里出问题。

更新

所有问题都与mPager.setCurrentItem(itemNumber)的行为有关。它在显示之前创建视图。并且没有覆盖方法来显示或不显示通知视图。我自己怎么做这样的方法。还是在显示之前停止FragmentStatePagerAdapter创建视图?有什么办法吗?

0 个答案:

没有答案