ClassNotFoundException android.preference.ListView

时间:2016-05-26 00:06:49

标签: java android android-fragments

当我尝试在我的android项目中使用PreferenceFragment时,我得到以下堆栈跟踪:

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

这是PreferencesFragment的XML,名为preferences.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

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


}

这就是我在给片段进行渗透时所说的话:

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

我需要更改哪些内容才能解决此错误?

2 个答案:

答案 0 :(得分:0)

您无法将ViewPreference组合在这样的XML中。选择其中一个。

答案 1 :(得分:0)

ListView不是可以成为preferences布局一部分的合法控件。

您可以在首选项布局中使用以下控件:

  • CheckBoxPreference
  • ListPreference
  • EditTextPreference