当我点击标题时,没有偏好显示

时间:2015-03-08 18:08:25

标签: java android android-fragments preferenceactivity preferencefragment

我正在处理我的应用程序的设置活动。我为首选项设置了两个标题,然后我为每个标题创建了片段。问题是当我点击标题时,没有任何显示。谢谢你的帮助。

这是我的偏好活动

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>

片段1:

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

1 个答案:

答案 0 :(得分: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