Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ViewPager中的片段未立即显示_Android_Android Fragments_Android Viewpager - Fatal编程技术网

Android ViewPager中的片段未立即显示

Android ViewPager中的片段未立即显示,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我有一个主要片段,里面有一个viewpager。此viewpager有2页(片段)。一切正常 当我启动activty时,会显示主片段,我还想显示第一个分页片段的(即加载数据) 目前我有: @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); viewPager.setCurrentItem(

我有一个主要片段,里面有一个viewpager。此viewpager有2页(片段)。一切正常

当我启动activty时,会显示主片段,我还想显示第一个分页片段的(即加载数据)

目前我有:

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    viewPager.setCurrentItem(0);
}

@Override
public void onPageSelected(int position) {
    Fragment fragment = (Fragment) pagerAdapter.instantiateItem(viewPager, position);
    if (fragment instanceof IPagedFragment) {
        ((IPagedFragment) fragment).onShown();
    }
}
这是寻呼机适配器:

private static class PagerAdapter extends FragmentPagerAdapter {
    public PagerAdapter(android.support.v4.app.FragmentManager fm) {
        super(fm);
    }

    @Override
    public android.support.v4.app.Fragment getItem(int position) {
        switch (position) {
            case 0:  return Frag1.newInstance();
            case 1:  return Frag2.newInstance();
            default: return null;
        }
    }

   //Other overrides...
}
但是,调用
setCurrentItem
不会调用
onPageSelected


如何强制第一个片段调用其
onShown
方法?

没错,ViewPager不会为第一项调用
onPageSelected

另外,
setCurrentItem
也不会触发
onPageSelected
,因为ViewPager的当前页面实际上没有更改。(初始页为0) 如果您想知道它是如何工作的,请仔细查看(
setCurrentItemInternal


解决方案是直接调用
onPageSelected(0)
,而不是
setCurrentItem

为什么
实例化Item()
而不是
获取项目(位置)
?请向我们显示您的适配器代码。@shkschneider适配器代码添加到问题中。