Daniel Bystrican
Daniel Bystrican

Reputation: 131

When i click on header, no preferences show up

I am working of settings activity for my application. I seted up two headers for preferences and then i made fragment for each header. Problem is when i click on header, nothing shows up. Thank you for your help.

Here is my preference activity

public class Preferences extends PreferenceActivity {

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

    }
}

Here is first fragment

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);
        }

    }


}

Here is second fragment:

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 files: Headers

<?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>

Upvotes: 2

Views: 779

Answers (1)

ceph3us
ceph3us

Reputation: 7474

check if u didn't get:

java.lang.RuntimeException:

Subclasses of PreferenceActivity must override isValidFragment(String) to verify that the Fragment class is valid! XXX has not checked if fragment YYY is valid.

isValidFragment Android API 19

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

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

Upvotes: 2

Related Questions