Android 如何在ViewPager中添加PreferenceFragment?

Android 如何在ViewPager中添加PreferenceFragment?,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我的所有片段都是android.support.v4.app.Fragment,Viewpager扩展了FragmentStatePagerAdapter,它也使用android.support.v4.app.Fragment 我有一个Fragment类,它扩展了PreferenceFragment,我想将它与其他两个片段一起添加到我的Viewpager中 我怎样才能做到这一点 这是我的寻呼机 public class SectionsPagerAdapter extends FragmentS

我的所有片段都是android.support.v4.app.Fragment,Viewpager扩展了FragmentStatePagerAdapter,它也使用android.support.v4.app.Fragment

我有一个Fragment类,它扩展了PreferenceFragment,我想将它与其他两个片段一起添加到我的Viewpager中

我怎样才能做到这一点

这是我的寻呼机

public class SectionsPagerAdapter extends FragmentStatePagerAdapter {

private ArrayList<Fragment> mFragments = new ArrayList<>();
private ArrayList<String> mFragmentsTitle = new ArrayList<>();

public void addFragment(Fragment fragment, String title){
    mFragments.add(fragment);
    mFragmentsTitle.add(title);
}

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

@Override
public Fragment getItem(int position) {
    return mFragments.get(position);
}

@Override
public int getCount() {
    return mFragments.size();
}

@Override
public CharSequence getPageTitle(int position) {
    return mFragmentsTitle.get(position);
}


}
当我尝试将其添加到中时:

mSectionsPagerAdapter.addFragment(new GameNotesFragment(), "Note");
它给了我

Wrong firt argument com.example.fragments.GameNotesFragment', required: 'android.support.v4.app.Fragment' 
扩展
片段
类的平台变量。您需要的是一个扩展
Fragment
的support lib变体(注意不同的包)

支持首选项要求gradle文件中包含其他程序包:

implementation 'com.android.support:preference-v7:27.1.0'
implementation 'com.android.support:preference-v14:27.1.0'


此外,在您进行此操作时,请务必查看我为支持首选项创建的常见(且非常恼人)错误。

您的问题到底是什么?问题是我无法在viewpager中添加我的PrefRefragment首先,您所说的“我无法在viewpager中添加我的PrefRefragment”是什么意思?它是否显示编译错误?还是运行时错误(例如异常)?其次,我非常确定您不应该在
首选项片段中重写
onCreateView(…)
。我编辑了我的问题。请检查一下!您使用了错误的基类。查看我的答案。找不到PreferenceFragmentCompat是否需要更改我的gradle?是的,您需要将支持首选项包添加到您的gradle中。检查我的最新答案。我忘了接受你的答案,很抱歉。非常感谢。当然,没问题。谢谢
public class SectionsPagerAdapter extends FragmentStatePagerAdapter {

    private ArrayList<Fragment> mFragments = new ArrayList<>();
    private ArrayList<String> mFragmentsTitle = new ArrayList<>();

    public void addFragment(Fragment fragment, String title){
        mFragments.add(fragment);
        mFragmentsTitle.add(title);
    }

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

    @Override
    public android.support.v4.app.Fragment getItem(int position) {
        android.support.v4.app.Fragment f = null;
        if (position == 0) {
            f = new GameNotesFragment();
        }

        if (position == 1) {
            f = new GameNotesFragment(); //replace your fragment 2
        }

        if (position == 2) {
            f = new GameNotesFragment();//replace your fragment 3
        }

        return f;
    }

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

    @Override
    public CharSequence getPageTitle(int position) {

        switch (position) {
            case 0:
                return getResources().getString(R.string.name1);
            case 1:
                return getResources().getString(R.string.name2);
            case 2:
                return getResources().getString(R.string.name3);
        return null;
    }
}
SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter(MainActivity.this.getSupportFragmentManager());
tabLayout = v1.findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
implementation 'com.android.support:preference-v7:27.1.0'
implementation 'com.android.support:preference-v14:27.1.0'