片段可以是视图寻呼机而不是活动的主机吗?

时间:2016-04-22 17:31:17

标签: android tabs

视图寻呼机可以放在片段的布局中,所以这个片段会成为其他一些片段的主机吗?到目前为止,我只看过活动作为主持人。

2 个答案:

答案 0 :(得分:2)

是的,你可以使用下面的代码

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

ViewPager mViewPager = (ViewPager) view.findViewById(R.id.viewPager);
mViewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
}

在此处查看完整实施https://github.com/marcoRS/nested-fragments/tree/master/src/com/burnside/digital/nestedfragments

答案 1 :(得分:0)

是的,有可能。 下面是一个示例(使用ViewPager在片段中使用TabHost):

    public class GroupFragment extends Fragment {

    private static TabLayout tabLayout;
    private static ViewPager viewPager;
    private static final int int_items = 4 ;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            View x =  inflater.inflate(R.layout.tab_layout,null);
            tabLayout = (TabLayout) x.findViewById(R.id.tabs);
            viewPager = (ViewPager) x.findViewById(R.id.viewpager);

        viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));

        tabLayout.post(new Runnable() {
            @Override
            public void run() {
                    tabLayout.setupWithViewPager(viewPager);
                   }
        });

        return x;

    }

    class MyAdapter extends FragmentPagerAdapter{

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

        @Override
        public Fragment getItem(int position){
            switch (position){
                case 0 : return new PrimaryFragment();
                case 1 : return new SocialFragment();
                case 2 : return new UpdatesFragment();
                case 3 : return new TeamFragment();
            }
            return null;
        }

        @Override
        public int getCount() {

            return int_items;

        }

        @Override
        public CharSequence getPageTitle(int position) {

            switch (position){
                case 0 :
                    return "Grupo A";
                case 1 :
                    return "Grupo B";
                case 2 :
                    return "Grupo C";
                case 3:
                    return "Grupo D";
            }
                return null;
        }
    }

}

片段的布局是这样的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="wrap_content">

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        app:tabGravity="fill"
        app:tabMode="fixed"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </android.support.design.widget.TabLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v4.view.ViewPager>

</LinearLayout>

我希望有所帮助。