我正在尝试一个非常简单的 PreferenceActivity 并且它与 EditTextPreference 一起工作正常但是当我添加 ListPreference 时它总是抛出这个错误(第 16 行是 ListPreference 行):
11-06 15:15:02.746:E/AndroidRuntime(11607):致命异常:主要 11-06 15:15:02.746:E/AndroidRuntime(11607):java.lang.RuntimeException:无法启动活动 ComponentInfo{br。 com.mtcbrasilia.aa/br.com.mtcbrasilia.aa.PreferencesActivity}:android.view.InflateException:二进制 XML 文件第 16 行:错误膨胀类 java.lang.reflect.Constructor 11-06 15:15:02.746:E /AndroidRuntime(11607): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2247) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2297) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.app.ActivityThread.access$700(ActivityThread.java:152) 11-06 15:15:02.746: E/AndroidRuntime(11607):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.os.Handler.dispatchMessage(Handler.java:99) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.os.Looper.loop (Looper.java:137) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.app.ActivityThread.main(ActivityThread.java:5328) 11-06 15:15:02.746: E/AndroidRuntime (11607): 在 java.lang.reflect.Method.invokeNative(Native Method) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 java.lang.reflect.Method.invoke(Method.java:511 ) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 11-06 15:15:02.746: E/AndroidRuntime (11607): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 dalvik.system.NativeStart。主要(本机方法)11-06 15:15:02.746:E/AndroidRuntime(11607):原因:android.view.InflateException:二进制 XML 文件第 16 行:错误膨胀类 java.lang.reflect.Constructor 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.preference.GenericInflater.createItem(GenericInflater.java:397) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.preference.GenericInflater .onCreateItem(GenericInflater.java:417) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.preference.GenericInflater.createItemFromTag(GenericInflater.java:428) 11-06 15:15:02.746: E /AndroidRuntime(11607): 在 android.preference.GenericInflater.rInflate(GenericInflater.java:481) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.preference.GenericInflater.inflate(GenericInflater.java: 326) 11-06 15:15:02.746:E/AndroidRuntime(11607): 在 android.preference.GenericInflater.inflate(GenericInflater.java:263) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java :269) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.preference.PreferenceActivity.addPreferencesFromResource(PreferenceActivity.java:1531) 11-06 15:15:02.746: E/AndroidRuntime(11607):在 br.com.mtcbrasilia.aa.PreferencesActivity.onCreate(PreferencesActivity.java:12) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.app.Activity.performCreate(Activity.java:5250) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.应用程序.ActivityThread。performLaunchActivity(ActivityThread.java:2211) 11-06 15:15:02.746: E/AndroidRuntime(11607): ... 11 更多 11-06 15:15:02.746: E/AndroidRuntime(11607): 原因:java。 lang.reflect.InvocationTargetException 11-06 15:15:02.746: E/AndroidRuntime(11607): at java.lang.reflect.Constructor.constructNative(Native Method) 11-06 15:15:02.746: E/AndroidRuntime(11607) : 在 java.lang.reflect.Constructor.newInstance(Constructor.java:417) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.preference.GenericInflater.createItem(GenericInflater.java:383) 11 -06 15:15:02.746: E/AndroidRuntime(11607): ... 22 更多 11-06 15:15:02.746: E/AndroidRuntime(11607): 由: java.lang.NullPointerException 11-06 15:15 :02.746: E/AndroidRuntime(11607): 在 android.content.res.AssetManager.getResourceTextArray(AssetManager.java:214) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.content.res.Resources.getTextArray(Resources.java:1273) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.content.res .TypedArray.getTextArray(TypedArray.java:629) 11-06 15:15:02.746: E/AndroidRuntime(11607): 在 android.preference.ListPreference.(ListPreference.java:50) 11-06 15:15:02.746: E/AndroidRuntime(11607): ... 25 更多
这是我的 res/xml/preferences.xml:
<?xml version="1.0" encoding="utf-8"?>
<EditTextPreference
android:title="test"
android:summary="summary test"
android:key="testKey"/>
<ListPreference android:key="languagePref"
android:entries="@array/menu_pref_language_titles"
android:summary="bla bla"
android:entryValues="@array/menu_pref_language_codes"
android:title="@string/pref_language" />
我的偏好活动:
public class PreferencesActivity extends PreferenceActivity {
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
我的strings.xml:
<string name="pref_language">Language:</string>
<string name="pref_language_default">default</string>
<string-array name="menu_pref_language">
<item>Device default</item>
<item>English</item>
<item>Portuguese</item>
</string-array>
<string-array name="menu_pref_language_codes">
<item>default</item>
<item>en</item>
<item>pt</item>
</string-array>
还有我的清单:
<activity
android:name=".PreferencesActivity"
android:label="@string/action_settings"
android:launchMode="standard"
>
</activity>
我的目标 sdk 是 11 到 18(目前),它在 18 上不起作用(我的模拟器有问题)。我知道我可以使用 PreferenceFragment 但我打算稍后针对较旧的 sdks。
有什么想法吗?