ViewPager使用支持和本地Fragements

时间:2017-04-20 15:48:12

标签: android android-fragments android-viewpager android-support-library

我正在开发一个使用片段和ViewPager的应用程序,允许用户根据Camera2'在googlesamples'之间使用Fragment API在包含预览的Fragement之间滑动。来自Github的Camera2Video示例。这就是问题发生的地方。

相机的此代码实现在很大程度上依赖于原生ViewPagerandroid.support.v4.app.Fragment似乎需要使用Fragment似乎我需要一种方法来实现这两者{ {1}}在同一个项目中。在本文中,我确实知道android.support.v13.app.FragmentCompat的存在,但是,这似乎并没有提供函数/方法和功能来普遍使用我正在使用的代码实现。

基本片段文件

我的基本Fragment文件遵循此设计。

public class FriendsFragment extends Fragment {
    /**
     * Recommended empty Constructor
     */
    public FriendsFragment() { }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate and return the views from XML layout, don't attach to container at this time
        return (inflater.inflate(R.layout.fragment_feed, container, false));
    }

    /**
     * Instantiates and returns a new FriendsFragment
     * @return FriendsFragment instance
     */
    public static FriendsFragment newInstance() {
        return (new FriendsFragment());
    }
}

获取碎片

这个基本代码是我在Fragments之间处理ViewPager之间切换的方式。

public class MainActivity extends FragmentActivity {
    private final int NUMBER_OF_PAGES = 2;

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

        ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
        pager.setAdapter(new SwipePagerAdapter(getSupportFragmentManager()));
    }

    private class SwipePagerAdapter extends FragmentPagerAdapter {

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

        @Override
        public Fragment getItem(int position) {
            switch(position) {
                case 0:
                    return FirstFragment.newInstance();
                case 1:
                    return SecondFragment.newInstance();
                default:
                    return SecondFragment.newInstance();
            }
        }

        /**
         * Returns the number of Fragment pages available to the {@link FragmentPagerAdapter}
         * @return The number of pages
         */
        @Override
        public int getCount() {
            return NUMBER_OF_PAGES;
        }
    }
}

0 个答案:

没有答案