0

我正在尝试一个非常简单的 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。

有什么想法吗?

4

1 回答 1

0

在首选项文件中,您有:

android:entries="@array/menu_pref_language_titles"

在您拥有的字符串文件中

name="menu_pref_language"
于 2013-11-06T17:37:21.693 回答