当我尝试在我的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();
我需要更改哪些内容才能解决此错误?
答案 0 :(得分:0)
您无法将View
和Preference
组合在这样的XML中。选择其中一个。
答案 1 :(得分:0)
ListView不是可以成为preferences布局一部分的合法控件。
您可以在首选项布局中使用以下控件: