Java 带有支持库的PreferenceFragment

Java 带有支持库的PreferenceFragment,java,android,android-fragments,sharedpreferences,android-support-library,Java,Android,Android Fragments,Sharedpreferences,Android Support Library,我正在开发一个应用程序,在这个应用程序中,我一直在使用支持库片段,但我偶然发现了这个问题,我似乎无法使用该库添加首选项片段(用于设置) 我发现了一些使用v7 PreferenceFragmentCompat的建议,但是由于某种原因,我无法将v7支持库添加到我的构建路径中,因此我无法找到PreferenceFragmentCompat 我尝试过重写代码,以使用常规片段而不是支持库中的片段,但我也遇到了一些问题 如果你想知道的话,我正在使用支持库进行开发,因为在阅读关于android编程的Big N

我正在开发一个应用程序,在这个应用程序中,我一直在使用支持库片段,但我偶然发现了这个问题,我似乎无法使用该库添加
首选项片段
(用于设置)

我发现了一些使用
v7 PreferenceFragmentCompat
的建议,但是由于某种原因,我无法将
v7
支持库添加到我的构建路径中,因此我无法找到
PreferenceFragmentCompat

我尝试过重写代码,以使用常规片段而不是支持库中的片段,但我也遇到了一些问题

如果你想知道的话,我正在使用支持库进行开发,因为在阅读关于android编程的Big Nerd Ranch的书时,他们在早期的某个地方建议总是使用支持库进行片段开发

对解决方法有什么建议吗,或者我应该尝试切换到非支持版本吗

以下是my build.gradle中的依赖项:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:preference-v7:23.1.1'
}

appcompat v7库实际上使用v4支持库,因此需要显式导入所需的v7支持库组件

在您的情况下,只需将
compile'com.android.support:preference-v7:23.1.1'
添加到build.gradle:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:preference-v7:23.1.1'
}
那么这就行了:

import android.os.Bundle;
import android.support.v7.preference.PreferenceFragmentCompat;
import android.view.View;

public class MyPreferenceFragment extends PreferenceFragmentCompat {

    public MyPreferenceFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreatePreferences(Bundle bundle, String s) {
        addPreferencesFromResource(R.xml.fragment_settings_pref);
    }
}

支持库首选项片段的渐变依赖项为:

implementation 'com.android.support:preference-v14:28.0.0'

如果您正在使用androidx,请使用

 implementation "androidx.legacy:legacy-preference-v14:1.0.0"
 implementation "androidx.preference:preference:1.1.1"

为什么不能将支持库添加到构建路径?您使用的是Android Studio还是Eclipse?如果您正在使用Android Studio,请显示您的build.gradle依赖项……以下是我的gradle依赖项{compile fileTree(包括:['*.jar'],dir:'libs')testCompile'junit:junit:4.12'compile'com.Android。支持:appcompat-v7:23.1.1'compile'com.Android。支持:设计:23.1.1'}@danielnugent感谢Daniel,我确实在gradle中遇到了一个问题,我没有注意到在项目结构中添加依赖项会自动配置gradle文件。先生,您救了我一天。您应该将
addPreferencesFromResource
放入:“在
onCreate(Bundle)期间调用”
提供此片段的首选项。子类应直接或通过辅助方法调用
setPreferenceScreen(PreferenceScreen)
,如
addPreferencesFromResource(int)