如何将 Activity 转换为使用 getSupportFragmentManager 的片段

How to Convert an Activity to a Fragment that Utilizes getSupportFragmentManager

我正在尝试将 Activity 转换为片段,但我遇到 getSupportFragmentManager 的问题无法解决,我的 getDrawable 也是如此。我不知道从这里去哪里。任何有关代码示例的帮助将不胜感激。

我尝试的片段:

public class HomeFragment extends Fragment {

    private MaterialViewPager mViewPager;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.activity_home, container, false);

        mViewPager = (MaterialViewPager) rootView.findViewById(R.id.materialViewPager);

        mViewPager.getViewPager().setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {

            @Override
            public Fragment getItem(int position) {
                switch (position % 4) {
                    //case 0:
                    //    return RecyclerViewFragment.newInstance();
                    //case 1:
                    //    return RecyclerViewFragment.newInstance();
                    //case 2:
                    //    return WebViewFragment.newInstance();
                    default:
                        return RecyclerViewFragment.newInstance();
                }
            }

            @Override
            public int getCount() {
                return 4;
            }

            @Override
            public CharSequence getPageTitle(int position) {
                switch (position % 4) {
                    case 0:
                        return "Projects";
                    case 1:
                        return "Missions";
                    case 2:
                        return "Areas";
                    case 3:
                        return "Flights";
                }
                return "";
            }
        });

        mViewPager.setMaterialViewPagerListener(new MaterialViewPager.Listener() {

            @Override
            public HeaderDesign getHeaderDesign(int page) {
                switch (page) {
                    case 0:
                        return HeaderDesign.fromColorResAndDrawable(
                                R.color.colorPrimaryDark,
                                getDrawable(R.drawable.kenburns_cityview));
                    case 1:
                        return HeaderDesign.fromColorResAndDrawable(
                                R.color.colorPrimaryDark,
                                getDrawable(R.drawable.kenburns_glendalough));
                    case 2:
                        return HeaderDesign.fromColorResAndDrawable(
                                R.color.colorPrimaryDark,
                                getDrawable(R.drawable.kenburns_goldengatebridge));
                    case 3:
                        return HeaderDesign.fromColorResAndDrawable(
                                R.color.colorPrimaryDark,
                                getDrawable(R.drawable.kenburns_dubai));
                }

                return null;
            }
        });

        mViewPager.getViewPager().setOffscreenPageLimit(mViewPager.getViewPager().getAdapter().getCount());
        mViewPager.getPagerTitleStrip().setViewPager(mViewPager.getViewPager());

        return rootView;
    }

}

从此(原创)Activity:

public class MainActivity extends AppCompatActivity {

    private MaterialViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mViewPager = (MaterialViewPager) findViewById(R.id.materialViewPager);
        FoldingTabBar tabBar = (FoldingTabBar) findViewById(R.id.folding_tab_bar);

        mViewPager.getViewPager().setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {

            @Override
            public Fragment getItem(int position) {
                switch (position % 4) {
                    //case 0:
                    //    return RecyclerViewFragment.newInstance();
                    //case 1:
                    //    return RecyclerViewFragment.newInstance();
                    //case 2:
                    //    return WebViewFragment.newInstance();
                    default:
                        return RecyclerViewFragment.newInstance();
                }
            }

            @Override
            public int getCount() {
                return 4;
            }

            @Override
            public CharSequence getPageTitle(int position) {
                switch (position % 4) {
                    case 0:
                        return "Projects";
                    case 1:
                        return "Missions";
                    case 2:
                        return "Areas";
                    case 3:
                        return "Flights";
                }
                return "";
            }
        });

        mViewPager.setMaterialViewPagerListener(new MaterialViewPager.Listener() {

            @Override
            public HeaderDesign getHeaderDesign(int page) {
                switch (page) {
                    case 0:
                        return HeaderDesign.fromColorResAndDrawable(
                                R.color.colorPrimaryDark,
                                getDrawable(R.drawable.kenburns_cityview));
                    case 1:
                        return HeaderDesign.fromColorResAndDrawable(
                                R.color.colorPrimaryDark,
                                getDrawable(R.drawable.kenburns_glendalough));
                    case 2:
                        return HeaderDesign.fromColorResAndDrawable(
                                R.color.colorPrimaryDark,
                                getDrawable(R.drawable.kenburns_goldengatebridge));
                    case 3:
                        return HeaderDesign.fromColorResAndDrawable(
                                R.color.colorPrimaryDark,
                                getDrawable(R.drawable.kenburns_dubai));
                }

                return null;
            }
        });

        mViewPager.getViewPager().setOffscreenPageLimit(mViewPager.getViewPager().getAdapter().getCount());

    }
}

获得支持 FragmentManagerAppCompatActivity 的一种方法,因此在您的支持 Fragment 中您需要 getActivity().getSupportFragmentManager()。您可以以类似的方式引用 getDrawable 方法。

如果片段是 activity 的直接子级,您还可以调用片段的 getFragmentManager