ClassNotFoundException android.предпочтение.элемент управления ListView

Я получаю следующий stacktrace, когда я пытаюсь использовать PreferenceFragment в моем проекте android:

Process: com.fedorparetsky.parcare, PID: 25574
    android.view.InflateException: Binary XML file line #31: Error inflating class ListView
    ....
    Caused by: java.lang.ClassNotFoundException: Didn't find class "android.preference.ListView" on path: DexPathList[[zip file "/data/app/com.fedorparetsky.parcare-1/base.apk"],nativeLibraryDirectories=[/data/app/com.fedorparetsky.parcare-1/lib/arm, /vendor/lib, /system/lib]]

Вот XML для PreferencesFragment, называется preferences.XML:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen >

    <PreferenceCategory
        android_title="General">
    </PreferenceCategory>

    <PreferenceCategory
        android_title="Account">

        <Preference android_title="Change Email"
            android_key="@string/changeEmailButton"
            android_summary="Change Email Summary"/>
        <Preference android_title="Change Password"
            android_key="@string/changePasswordButton"
            android_summary="Change Password Summary"/>

    </PreferenceCategory>

    <PreferenceCategory
        android_title="About">
        <Preference
            android_title="Our Website">
            <intent android_action="android.intent.action.VIEW"
                android_data="http://parcare.me" />
        </Preference>

    </PreferenceCategory>

    <ListView
        android_id="@android:id/list"
        android_layout_width="match_parent"
        android_layout_height="match_parent"
        android_layout_marginTop="5dp" />

</PreferenceScreen>

Вот SettingsFragment.java, код для фрагмента:

import android.os.Bundle;
import android.preference.PreferenceFragment;

import com.fedorparetsky.parcare.R;


public class SettingsFragment extends PreferenceFragment {


@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);


}

И вот что я называю, когда я infalte фрагмент:

fm.beginTransaction().replace(R.id.content_frame, new SettingsFragment()).commit();

Что мне нужно изменить, чтобы преодолеть эту ошибку?

2 ответа

  1. ListView не является законным элементом управления, который может быть частью макета предпочтений.

    В макете предпочтений можно использовать следующие элементы управления:

    • CheckBoxPreference
    • ListPreference
    • EditTextPreference