我遇到了一个似乎出现在模拟器和个人可调试设备上的异常。
这是preferences.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header
android:title="sound"
android:summary=""
android:icon="@android:drawable/ic_media_ff"
android:fragment="com.example.app.activities.PreferencesActivity$SoundSettingsPreferenceFragment" />
</preference-headers>
这是preferences_sound文件:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="First Category"
android:key="first_category">
<CheckBoxPreference
android:key="pref_cbx"
android:title="checkbox"
android:summary="checkbox summ"
android:defaultValue="true" />
</PreferenceCategory>
</PreferenceScreen>
这是相关代码活动:
import java.util.List;
import android.annotation.SuppressLint;
import android.preference.PreferenceActivity;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import com.example.app.R;
@SuppressLint("NewApi")
public class PreferencesActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
}
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preferences, target);
}
public static class SoundSettingsPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_sound);
}
}
}
这是输出错误:
10-30 11:31:58.812: E/ActivityThread(9783): Failed to inflate
10-30 11:31:58.812: E/ActivityThread(9783): android.view.InflateException: Binary XML file line #3: Error inflating class preference-headers
...
10-30 11:31:58.812: E/ActivityThread(9783): Caused by: java.lang.ClassNotFoundException: android.preference.preference-headers
...
答案 0 :(得分:2)
通常,当您忽略导出正在使用的外部库时,会显示此错误。如果您正在使用外部jar文件,请务必进入属性并选中该选项卡中的导出复选框。
java build path -> order and export
答案 1 :(得分:2)
Android会从可绘制文件夹调整其位图以适应屏幕。它是在布局膨胀期间完成的。如果您的应用程序仅在“可绘制”文件夹中具有图像(或者就此而言,如果所有分辨率只有1个文件夹),则调整大小有时会失败。你甚至可以获得OOM例外。因此,我建议您创建一个drawable-mdpi文件夹,并将该单个文件夹中的所有drawable复制到mdpi。
我知道这听起来很疯狂,但大多数充气布局问题都会随着这一改变而消失。试试吧。反正不会受伤。
答案 2 :(得分:0)
只需检查应用于PreferenceActivity的主题是否与PreferenceActivity对象兼容。