android - 如何在 ViewPager 中添加 PreferenceFragment?

标签 android android-fragments android-viewpager

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

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

我怎样才能做到这一点?

这是我的 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);
}


}

这是我的 PreferenceFragment 中的内容

public class GameNotesFragment extends PreferenceFragment {


public GameNotesFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_game_notes, container, false);
    return view;
}

}

当我尝试添加它时:

mSectionsPagerAdapter.addFragment(new GameNotesFragment(), "Note");

它给了我

Wrong firt argument com.example.fragments.GameNotesFragment', required: 'android.support.v4.app.Fragment' 

最佳答案

PreferenceFragment扩展了 Fragment 类的平台变体。你需要的是 PreferenceFragmentCompat扩展了 Fragment 的支持库变体(注意不同的包)。

支持首选项需要您的 gradle 文件中的其他包:

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

此外,当您使用它时,请务必查看 bug fix lib我为支持首选项的常见(而且非常烦人)错误创建了。

关于android - 如何在 ViewPager 中添加 PreferenceFragment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49225983/

相关文章:

java - 是否有扩展/重写私有(private)类/方法的替代方案?

android - 即使压缩图像后内存不足错误

java - NullPointerException - 无法启动 Activity

android - ViewPager 不显示任何内容

android - Android 中 ViewPager 的替代方案

android - Fragment 内的 ViewPager 具有边距和页面转换器无法正确呈现

android - 具有不均匀列大小或 Horizo​​ntal StaggeredGridView 的动态适配器 View

java - 从 API 响应中以字符串格式格式化日期和时间

android - 如何使 ViewPager 的项目在方向改变时被销毁?

java - Android:(...)Fragment 类和 (...)ViewModel 类