Android 如何在应用程序启动时创建所有片段

Android 如何在应用程序启动时创建所有片段,android,android-fragments,Android,Android Fragments,我正在以编程方式创建大量片段。它们都有不同的布局,活动片段的布局在片段之间交换后会发生变化 当程序启动时,FragmentPagerAdapter创建前两个片段。如果我选择最后一个片段(例如从第一个片段到第七个片段)FragmentPagerAdapter开始创建第七个片段,然后创建第六个片段。此时,我想使用下面的代码选择当前片段 `(FragmentMasaDesign) getSupportFragmentManager().getFragments().get

我正在以编程方式创建大量片段。它们都有不同的布局,活动片段的布局在片段之间交换后会发生变化

当程序启动时,
FragmentPagerAdapter
创建前两个片段。如果我选择最后一个片段(例如从第一个片段到第七个片段)
FragmentPagerAdapter
开始创建第七个片段,然后创建第六个片段。此时,我想使用下面的代码选择当前片段

`(FragmentMasaDesign) getSupportFragmentManager().getFragments().get
                                (myViewPager.getCurrentItem());`
myViewPager.getCurrentItem()
返回6。这是真的,因为我选择了第7个片段,它的索引是6。然而,我只有四个创建的片段,它们是1-2-6-7。因此,
getFragments()
方法返回这四个片段,它无法选择当前活动片段,因为
myViewPager.getCurrentItem()


有没有办法在应用程序开始时创建所有片段,或者如何在创建其他片段之前获取当前片段?

您可以使用设置viewpager上的片段数


您可以使用设置viewpager上的片段数

也可以在屏幕上找到可见的片段。稍后我将分享它的代码

感谢所有花时间回答我问题的人

也可以在屏幕上找到可见的片段。稍后我将分享它的代码


感谢所有花时间回答我问题的人。

你可以用一个片段替换另一个片段,如下所示

DiplayFragment newFragment = new DiplayFragment();

                                    FragmentTransaction transaction = getSupportFragmentManager()
                                            .beginTransaction();
                                    transaction
                                            .replace(R.id.nav_fl_frag_container, newFragment);
                                    transaction.addToBackStack(null);
                                    transaction.commit();

您可以将一个片段替换为另一个片段,如下所示

DiplayFragment newFragment = new DiplayFragment();

                                    FragmentTransaction transaction = getSupportFragmentManager()
                                            .beginTransaction();
                                    transaction
                                            .replace(R.id.nav_fl_frag_container, newFragment);
                                    transaction.addToBackStack(null);
                                    transaction.commit();

这应该是最好的方式!这应该是最好的方式!
   public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
        mViewPager.setCurrentItem(tab.getPosition());
        fragment = collectionPagerAdapter.fragments[mViewPager.getCurrentItem()];
    }
DiplayFragment newFragment = new DiplayFragment();

                                    FragmentTransaction transaction = getSupportFragmentManager()
                                            .beginTransaction();
                                    transaction
                                            .replace(R.id.nav_fl_frag_container, newFragment);
                                    transaction.addToBackStack(null);
                                    transaction.commit();