0

我正在制作一个 3 个片段可滚动的应用程序,左侧片段是片段 1,片段 2 位于中心,片段 3 位于右侧。我想 Fragment2(center) 是第一个加载的,我用 mViewPager.setCurrentItem(1); 但是当我启动应用程序时,我在日志中得到了这个。

            onStart Fragment1 
            onResume Fragment1
            onStart Fragment3

当我转到 Fragment3(右)时,它的 onPause。当我转到 Fragment2(中心)时,我想暂停,因为我在 Fragment3 上遇到了主要的异常错误。

这是一个 MainActivity 类

       public class MainActivity extends FragmentActivity {  


    SectionsPagerAdapter mSectionsPagerAdapter;  
     ViewPager mViewPager;  


    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  

        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());  
        mViewPager = (ViewPager) findViewById(R.id.pager);  
        mViewPager.setAdapter(mSectionsPagerAdapter);  
        mViewPager.setCurrentItem(1);


    }  


    public class SectionsPagerAdapter extends FragmentPagerAdapter {  

        public SectionsPagerAdapter(android.support.v4.app.FragmentManager fm) {  
            super(fm);  
        }  

        @Override  
        public Fragment getItem(int position) {  
            Fragment fragment = new Fragment();  
            switch (position) {  
            case 0:  
                return fragment = new Fragment1();  
            case 1:  
                return fragment = new Fragment2();  
            case 2:  
                return fragment = new Fragment3();  
            default:  
                break;  

            }  
            return fragment; 
        }


        @Override  
        public int getCount() {  

            return 3;  
        }  

        @Override  
        public CharSequence getPageTitle(int position) {  
            Locale l = Locale.getDefault();  
            switch (position) {  
            case 0:  
                return getString(R.string.one).toUpperCase(l);  
            case 1:  
                return getString(R.string.two).toUpperCase(l);  
            case 2:  
                return getString(R.string.third).toUpperCase(l);  
            }  
            return null;  
        }  
    }  

     }

我是Android新手,我不知道如何解决这个问题,任何答案都会有所帮助。谢谢

4

1 回答 1

0

您正在使用FragmentPagerAdapter,android 默认情况下会在后台加载下一个和上一个片段,以便有效地加载片段并消除滞后。

但是,它们提供了一个 API 来自定义相同的内容,您可能希望对其进行调整以获得更好的性能。

setOffscreenPageLimit (int limit),用于设置您希望在后台加载的额外片段的数量。默认情况下,它设置为 1。

http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)

现在你不能根据它的设计进一步减少它。这意味着 ViewPager 要求您在当前页面上至少额外加载一页(之前和之后)。

试着放

mViewPager.setOffscreenPageLimit (0),它将显示以下警告:“请求的离屏页面限制 0 太小;默认为 1”

我希望这有帮助。

于 2013-11-03T13:12:39.187 回答