FragmentStatePagerAdapter,相同的片段,不同的布局

时间:2016-03-13 21:41:49

标签: android android-layout android-fragments android-pageradapter

在其他主题中:How to implement a ViewPager with different Fragments / Layouts 有不同的片段和不同的布局,每个都在getItem方法中选择。

我有很多不同的标价(但都是相似的)并重复使用相同的片段。在我的片段中我是这样的:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) 
{
    int pageLayout;
    switch (mPageNumber)
    {
    case 0:
        pageLayout = R.layout.fragment_screen_slide_page2;
        break;
    default:
        pageLayout = R.layout.fragment_screen_slide_page;
    }
    // Inflate the layout containing a title and body text.
    ViewGroup rootView = (ViewGroup) inflater
            .inflate(pageLayout, container, false);

    // Set the title view to show the page number.
    ((TextView) rootView.findViewById(android.R.id.text1)).setText(
            getString(R.string.title_template_step, mPageNumber + 1));

    return rootView;
}
/**
 * Factory method for this fragment class. Constructs a new fragment for the given page number.
 */
public static ScreenSlidePageFragment create(int pageNumber) {
    ScreenSlidePageFragment fragment = new ScreenSlidePageFragment();
    Bundle args = new Bundle();
    args.putInt(ARG_PAGE, pageNumber);
    fragment.setArguments(args);
    return fragment;
}

这是有效的,这种方法有什么问题,而不是为每个布局创建片段的经典方法吗?

1 个答案:

答案 0 :(得分:1)

我建议不要将页码传递给Fragment,而是让Fragment根据页码选择布局,使用反转控件并将布局资源传递给片段。然后可以比较片段以查看传递的布局资源是否与当前膨胀的布局资源不同并更改布局。

通过这种方式,您可以获得对片段的更多控制,因为您可以传递任意数量的可互换布局,而不必传递页码并使片段将页码映射到布局。