Java Can';无法使PreferenceFragment工作(编译错误)
当我试图编译我的项目时,我遇到了一个错误:“FragmentTransaction类型中的add(int,Fragment)方法不适用于参数(int,FragmentPreferences)”。据我所知,PreferenceFragment是一个片段?我正在为android 4.0开发,但我必须使用android-support-v4库,因为我的项目还包括ViewPager。我在以下网站上找到了这个例子: 但我不能让它工作 我的代码:Java Can';无法使PreferenceFragment工作(编译错误),java,android,fragment,android-preferences,Java,Android,Fragment,Android Preferences,当我试图编译我的项目时,我遇到了一个错误:“FragmentTransaction类型中的add(int,Fragment)方法不适用于参数(int,FragmentPreferences)”。据我所知,PreferenceFragment是一个片段?我正在为android 4.0开发,但我必须使用android-support-v4库,因为我的项目还包括ViewPager。我在以下网站上找到了这个例子: 但我不能让它工作 我的代码: case R.id.menu_settings: F
case R.id.menu_settings:
FragmentPreferences prefs = new FragmentPreferences();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(android.R.id.content, prefs);
ft.commit();
break;
片段首选项:
public class FragmentPreferences extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
检查代码顶部的
import
语句。很可能您使用的一个类来自support
,而另一个不是。这是因为PreferenceFragment
扩展了android.app.Fragment
,而不是android.support.v4.app.FragmentTransaction
所期望的android.support.v4.app.FragmentTransaction
到目前为止,还没有支持库的
PreferenceFragment
的正式后端口。但是,您可以使用诸如之类的库来填补这一空白。这里是PreferenceFragment到支持库的非正式后端口。上一次更新是2015年2月&它与棒棒糖设备兼容
如果我改变其中任何一个类,它将破坏我的viewpager。正如上面ianhanniballake所建议的,你将不得不寻找替代方案。如果你真的不需要片段,我会同时使用
首选项活动
。想解释一下为什么这是一个糟糕的解决方案吗?我搜索了很长时间的解决方案。顺便说一下,UnifiedReferences有很多问题,比如片段不调用以及与shecrlock actionbar库的样式冲突。。。等等,我讨厌统一参考图书馆,它几乎花了我两个小时。但是这个Compat库非常棒,很快就解决了我的问题:)谢谢@TanJitRen
public class FragmentPreferences extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
import android.support.v4.preference.PreferenceFragment;