2017-08-08 77 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是解決此問題的另一種方法。