FragmentPagerAdapter中的方法getItem()没有调用位于其他片段

时间:2017-06-20 12:50:59

标签: android android-fragments android-viewpager

有一个来自FrameLayout的视图,它只包含ViewPager

public final class PagerPieChart extends FrameLayout {

    private ViewPager viewPager;

    public PagerPieChart(@NonNull Context context) {
        this(context, null);
    }

    public PagerPieChart(@NonNull Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public PagerPieChart(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) {
        super(context, attrs, defStyleAttr);

        View root = inflate(getContext(), R.layout.widget_pager_pie_chart, null);
        viewPager = (ViewPager) root.findViewById(R.id.view_pager);
    }

    public void setValues(FragmentManager fragmentManager, String[] values) {
        viewPager.setAdapter(new Adapter(fragmentManager, values));
    }

    private class Adapter extends FragmentStatePagerAdapter {

        private String[] values;

        public Adapter(FragmentManager fm, String[] values) {
            super(fm);

            this.values = values;
        }

        @Override
        public Fragment getItem(int position) {
            return ValueFragment.getInstance(values[position]);
        }

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

        public int getItemPosition(Object object) {
            return POSITION_NONE;
        }
    }

    public static class ValueFragment extends Fragment {

        private String value;

        private static ValueFragment getInstance(String value) {
            ValueFragment fragment = new ValueFragment();
            fragment.value = value;
            return fragment;
        }

        public ValueFragment() {
        }

        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            return new TextView(getContext());
        }

        @Override
        public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);

            ((TextView) view).setText(value);
        }
    }
}

我将此视图初始化为

pagerPieChart.setValues(getChildFragmentManager(), new String[] {"12", "34", "56"});

调用Adapter的方法getCount,返回3,但不调用方法getItem()。请帮助我,我不正确?

0 个答案:

没有答案