首选项片段选项卡适配器

时间:2015-10-25 09:31:48

标签: android android-fragments android-preferences

我想为我的应用程序构建一个首选项选项卡,但由于我从常规片段扩展了其他选项卡,因此我有一个不兼容的类型错误,因为PreferenceFragment无法转换为Fragment。

这是我的Tab Fragment Adapter:

public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;

public PagerAdapter(FragmentManager fm, int NumOfTabs) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
}

@Override
public Fragment getItem(int position) {

    switch (position) {
        case 0:
            Tab1Discover tab1 = new Tab1Discover();
            return tab1;
        case 1:
            Tab2Planning tab2 = new Tab2Planning();
            return tab2;
        case 2:
            Tab3Favorites tab3 = new Tab3Favorites();
            return tab3;
        case 3:
            Tab4Messages tab4 = new Tab4Messages();
            return tab4;
        case 4 :
            /*Tab5Profile tab5 = new Tab5Profile();
            return tab5;*/
            return new PreferenceFragment() {
                @Override
                public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    addPreferencesFromResource(R.xml.settings);
                }
            };
        default:
            return null;
    }
}

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

1 个答案:

答案 0 :(得分:0)

存在不兼容的类型,问题是 - 您的片段继承自support.v4.app.Fragment,但PreferenceFragment继承自android.app.Fragment。

有两种方法可以处理它:

  1. 从android.app.Fragment
  2. 继承所有片段
  3. 重新实现PreferenceFragment,例如从here获取源代码并从support.v4.app.Fragment继承它