首选项不以编程方式显示在子屏幕中

时间:2017-08-08 06:53:57

标签: android preferences preferencefragment

我遵循了this可能的解决方案,但这仅适用于root PreferenceScreen。我正在使用v7支持PreferenceScreen和PreferenceFragmentCompat。

preference.xml

<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
      <android.support.v7.preference.PreferenceScreen
            android:key="pref_key_r"
            android:persistent="false"
            android:summary="@string/a"
            android:title="@string/pref_title_r">
        </android.support.v7.preference.PreferenceScreen>
</android.support.v7.preference.PreferenceScreen>

SettingsFragment.java

    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        addPreferencesFromResource(R.xml.preferences);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        PreferenceScreen preferenceScreen = (PreferenceScreen) getPreferenceScreen().findPreference("pref_key_r");
        Preference preference = new Preference(preferenceScreen.getContext());

        preference.setKey("pref_key_sp");
        preference.setTitle(R.string.sp);
        preferenceScreen.addPreference(preference);

}

我还缺少什么?

1 个答案:

答案 0 :(得分:1)

看来,这是来自首选项设计库的未解决问题here

链接中提到的这个问题有一些丑陋的变通方法,但我个人只是坚持使用旧的android.preference.PreferenceFragment,直到这个问题得到解决,因为我的偏好屏幕依赖于子屏幕。

编辑:Here是此问题的另一种解决方案。