Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';无法使PreferenceFragment工作(编译错误)_Java_Android_Fragment_Android Preferences - Fatal编程技术网

Java Can';无法使PreferenceFragment工作(编译错误)

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

当我试图编译我的项目时,我遇到了一个错误:“FragmentTransaction类型中的add(int,Fragment)方法不适用于参数(int,FragmentPreferences)”。据我所知,PreferenceFragment是一个片段?我正在为android 4.0开发,但我必须使用android-support-v4库,因为我的项目还包括ViewPager。我在以下网站上找到了这个例子:

但我不能让它工作

我的代码:

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;