2

Я работаю над настройками для своего приложения. Я настроил два заголовка для предпочтений, а затем сделал фрагмент для каждого заголовка. Проблема в том, что когда я нажимаю на заголовок, ничего не появляется. Спасибо за помощь.Когда я нажимаю на заголовок, никаких предпочтений не появляется

Вот мое предпочтение активности

public class Preferences extends PreferenceActivity { 

    public void onBuildHeaders(List<Header> target) { 
     loadHeadersFromResource(R.xml.prefheads, target); 

    } 
} 

Вот первый фрагмент

public class Prefs1 extends PreferenceFragment { 

    public static class SettingsFragment extends PreferenceFragment { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      addPreferencesFromResource(R.xml.fragment_prefs1); 
     } 

    } 


} 

Вот второй фрагмент:

public class Prefs2 extends PreferenceFragment { 


    public static class SettingsFragment extends PreferenceFragment { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      addPreferencesFromResource(R.xml.fragment_prefs2); 
     } 

    } 

} 

XML файлы: Заголовки

<?xml version="1.0" encoding="utf-8"?> 
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <header 
     android:fragment="com.example.lubys.prefs.prefs1" 
     android:title="First category" 
     android:summary="This doesnt need summary" /> 
    <header 
     android:fragment="com.example.lubys.prefs.prefs2" 
     android:title="Second cat" 
     android:summary="This is awful summary"> 
     </header> 
</preference-headers> 

Fragment1:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.example.lubys.prefs.prefs1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <PreferenceCategory 
     android:title="the title" 
     android:key="key2"> 
    <EditTextPreference android:title="Your Name" 
     android:key="username" 
     android:summary="Please provide your username"></EditTextPreference> 
    <CheckBoxPreference android:title="Application Updates" 
     android:defaultValue="false" 
     android:summary="This option if selected will allow the application to check for latest versions." 
     android:key="applicationUpdates" /> 

     <ListPreference 
      android:title="Download Details" 
      android:summary="Select the kind of data that you would like to download" 
      android:key="downloadType" 
      android:defaultValue="1" 
      android:entries="@array/c" 
      android:entryValues="@array/c" /> 

</PreferenceCategory> 

</PreferenceScreen> 

FRAGMENT2:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.example.lubys.prefs.prefs1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <PreferenceCategory 
     android:title="sms" 
     android:key="pref_key_storage_settings"> 
     <CheckBoxPreference 
      android:key="saas" 
      android:summary="asde" 
      android:title="Something" 
      android:defaultValue="false"/> 
    </PreferenceCategory> 
</PreferenceScreen> 

ответ

2

проверить, если у не получить:

java.lang.RuntimeException:

Подкласс PreferenceActivity должен переопределить isValidFragment (String), чтобы убедиться, что класс Fragment действителен! XXX не проверял, действителен ли фрагмент YYY.

isValidFragment Android API 19

when android's isValidFragment() from PreferenceActivity gets called?

http://securityintelligence.com/new-vulnerability-android-framework-fragment-injection#.VRGSv1V_NBc