2017-08-08 70 views
1

我跟着this可能的解决方案,但这只适用于根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); 

} 

我是什么人仍下落不明这里?

+0

尝试在'addPreferencesFromResource'后的'onCreatePreferences'函数中添加'Preference'。 – aborocz

+0

它仍然无法正常工作。 –

回答

0

看起来,这是一个尚未解决的问题,从偏好设计库中提到here

在链接中提到的这个问题有一些丑陋的解决方法,但我个人只是坚持旧的android.preference.PreferenceFragment,直到解决此问题,因为我的首选项屏幕依赖于子屏幕。

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

相关问题