FragmentStatePagerAdapter getItem的奇怪行为

时间:2013-10-05 23:00:51

标签: java android fragment

我有以下FragmentStatePagerAdapter内部类:

public class SectionsPagerAdapter extends FragmentStatePagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            /*
             * Here we are going to return the correct type of fragment for each
             * of the pages
             */
            switch(position){
            case 0:
                return MainListFragment.init(position); 
            case 1:
                return MainListFragment.init(position);
            case 2:
                return MainListFragment.init(position); 
            default:
                return MainListFragment.init(position); 
            }
        }

        @Override
        public int getCount() {
            // Show 3 total pages.
            return 3;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            Locale l = Locale.getDefault();
                    //breakpoint set here
            switch (position) {
            case 0:
                return getString(R.string.title_main_feed).toUpperCase(l);
            case 1:
                return getString(R.string.title_settings).toUpperCase(l);
            case 2:
                return getString(R.string.title_about).toUpperCase(l);
            }
            return null;
        }
    }

并且有一些非常奇怪的行为。我在调试器中设置了几个断点,以便发生了什么,这就是我发现的。我第一次启动应用程序时会触及一次断点,然后我点击“继续”并再次点击它,基本上在应用程序加载之前两次点击switch语句。应用加载后,只有第二页(第1页或中间)将显示列表数据。

另一个奇怪的事情是,当我滚动时,position变量永远不会是正确的。当我从0开始并且转到1时,断点被击中并且位置是2,然后当我滚动到2时,断点未被击中。我回到1,断点被击中,但位置是0,而不是1.

我对发生了什么以及为什么我没有在我的所有页面上获取列表数据感到困惑。有人可以澄清发生了什么吗?

基本上我想要做的是根据我所在的页面拥有不同的列表视图。我是以正确的方式做到这一点,还是我应该采取另一种方式来解决这个问题。

0 个答案:

没有答案