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

我有一个Fragment类,该类扩展了PreferenceFragment,我想与其他两个片段一起添加到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的support lib变体(请注意其他软件包)。

支持首选项在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/

10-10 04:03