我所有的 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/