PreferenceFragment与支持库

Ste*_*fan 6 java android sharedpreferences android-fragments android-support-library

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

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

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

如果您想知道,我正在开发支持库,因为在阅读关于Android编程的The Big Nerd Ranch书时,他们建议在某处尽早使用支持库来获取片段.

有关变通方法的任何建议,还是我应该尝试切换到不支持的版本?

以下是我的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'
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*ent 23

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

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

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'
}
Run Code Online (Sandbox Code Playgroud)

然后这将工作:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)