android - FragmentPagerAdapter.getItem (int) 显示错误的 Fragment

标签 android android-viewpager fragment fragmentpageradapter

我的FragmentPagerAdapter承载了ViewPager.OffScreenPageLimit的3个页面,始终显示最后加载的页面

我使用 ViewPager 来显示 fragment 。

我的 ViewPager

private static final int MONTH_SIZE = 12;

            viewPager.setAdapter(new CalendarFragmentPagerAdapter(getChildFragmentManager()));
        viewPager.setCurrentItem(GregorianCalendar.getInstance().get(Calendar.MONTH));
        viewPager.setClickable(true);
        viewPager.setSaveEnabled(false);
        viewPager.setOffscreenPageLimit(1);

我的 FragmentPageAdapter:

    public class CalendarFragmentPagerAdapter extends FragmentPagerAdapter {

    /**
     * @param fm
     */
    public CalendarFragmentPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    /**
     */
    @Override
    public Fragment getItem(int pageRequest) {
        return new CalendarFragment(pageRequest);
    }

    /**
     */
    @Override
    public int getCount() {
        return MONTH_SIZE - 1;
    }

    /**
     */
    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {

        case 0:
            return getString(R.string.monthJanuary);

        case 1:
            return getString(R.string.monthFebruary);

        case 2:
            return getString(R.string.monthMarch);

        case 3:
            return getString(R.string.monthApril);

        case 4:
            return getString(R.string.monthMay);

        case 5:
            return getString(R.string.monthJune);

        case 6:
            return getString(R.string.monthJuly);

        case 7:
            return getString(R.string.monthAugust);

        case 8:
            return getString(R.string.monthSeptember);

        case 9:
            return getString(R.string.monthOctober);

        case 10:
            return getString(R.string.monthNovember);

        case 11:
            return getString(R.string.monthDecember);

        default:
            return "";
        }
    }

    /**
     * @hide
     */
    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }
}

我的 fragment :

// Nothing especial
    List<CalendarEntry> events = getEvents(indexByCalendarFragmentPagerAdapter);

        listView = (ListView) view.findViewById(R.id.listView_calendar_screen);

        listView.setAdapter(new CalendarCustomAdapter(getActivity().getBaseContext(), events));

        listView.setClickable(true);

错误是例如五月的展示,二月的事件

已经试了好几种方法都不能解决问题,谁能帮帮我?

最佳答案

只需将此代码或名为 getCount() 的函数更改为:

@Override
public int getCount() {
    return events.length;
}

关于android - FragmentPagerAdapter.getItem (int) 显示错误的 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24018245/

相关文章:

android - 滑动菜单 Android

android - 将 child 添加到 NavigationView 组内的 MenuItem

java - 使用 LibGDX,如何使用单独的图像制作动画?

android - ViewPager "TransactionTooLargeException"测试 ViewPager

android - fragment View 膨胀错误 : Resource is not a drawable

android - 添加后删除 fragment 不起作用

android - 如何从适配器类打开弹出窗口

android - Android 8.0+ 特定时间的每日工作

android - 无法在 CirclePageIndicator 上设置 CurrentItem(0)

android - 为什么 Fragment 在 .hide() 和 .setCustomAnimations() 上崩溃?