Android的碎片奇怪的负载 [英] Android fragments strange load

查看:133
本文介绍了Android的碎片奇怪的负载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我作出3个片段滚动的应用程序,左片段片段1,fragment2为中心,fragment3是在右侧。我想Fragment2(中心)是第一个加载,而我做了与mViewPager.setCurrentItem(1);
但是,当我开始我的应用程序日志中得到这个。

I am making an 3 fragments scrollable app, left fragment is fragment1, fragment2 is in center, and fragment3 is on right side. I wanted to Fragment2(center) be the first to load, and i did that with mViewPager.setCurrentItem(1); But when i start app i got this in logs.

            onStart Fragment1 
            onResume Fragment1
            onStart Fragment3

和它的onPause当我去Fragment3(右)。我想上暂停,当我去Fragment2(中心),因为我对Fragment3了主要exeption错误。

And Its onPause when i go to Fragment3(right). I want to be on Pause when i go to Fragment2(center) because i got main exeption errors on Fragment3.

这是一个MainActivity类别

this is a MainActivity class

       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;  
        }  
    }  

     }

我是新来的Andr​​oid,我不知道如何解决这个问题,任何回答将帮助。谢谢

I am new to Android and i dont know how to fix this, any answer would help. Thank you

推荐答案

您正在使用的 FragmentPagerAdapter ,机器人通过默认加载​​背景下一个和previous片段,为了有效地加载片段并删除滞后。

You are using FragmentPagerAdapter, android by defaults loads a next and previous fragment in background, in order to load fragments efficiently and remove lag.

但是他们提供了一个API来定制一样的,你可能要调整它有更好的表现。

However they provide an API to customise the same and you may want to tweak it for better performance.

setOffscreenPageLimit(INT限制),用于设置要加载的背景额外碎片的数量。默认情况下其设置为1。

setOffscreenPageLimit (int limit), is used to set the number of extra fragments you would like to load in background. By default its set to 1.

<一个href=\"http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)\" rel=\"nofollow\">http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)

现在你不能进一步降低它,因为每次它的设计。这意味着ViewPager要求你在当前页面加载至少一个额外的页面(前,后两者)。

Now you can not reduce it further, as per its design. That means ViewPager required you to load at least one page extra (before and after both) with the current page.

尝试把

mViewPager.setOffscreenPageLimit(0),它会显示以下警告:
请求屏幕外页数限制0太小;默认为1

mViewPager.setOffscreenPageLimit (0), it will show the following warning: "Requested offscreen page limit 0 too small; defaulting to 1"

我希望这有助于。

这篇关于Android的碎片奇怪的负载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆