ListPreference вызывает ошибку раздувания в PreferenceActivity

Я пробую очень простую PreferenceActivity, и она отлично работает с EditTextPreference, но всегда выдает эту ошибку, когда я добавляю ListPreference (строка 16 — это строка ListPreference):

Вот мой файл 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" />

Мои строки.xml:

public class PreferencesActivity extends PreferenceActivity {

    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }

}

И мой манифест:

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

Мои целевые SDK от 11 до 18 (на данный момент), и он не работает на 18 (у меня проблемы с моими эмуляторами). Я знаю, что мог бы использовать PreferenceFragment, но я намерен использовать более старые SDK позже.

<activity
        android:name=".PreferencesActivity"
        android:label="@string/action_settings"
        android:launchMode="standard"
        >
    </activity>

Есть предположения?

В файле настроек у вас есть:


person Dpedrinha    schedule 06.11.2013    source источник


Ответы (1)


в файле строк у вас есть

android:entries="@array/menu_pref_language_titles"

О боже... глупая ошибка сводила меня с ума целый час! Ошибки локализации... Спасибо за зоркий глаз!

name="menu_pref_language"
person Dale Wilson    schedule 06.11.2013
comment
Пожалуйста. Удивительно, как часто свежий взгляд видит проблему. - person Dpedrinha; 06.11.2013
comment
11-06 15:15:02.746: E/AndroidRuntime(11607): НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: main 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): at 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(собственный метод) 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.main(собственный метод) 11-06 15:15:02.746: E/AndroidRuntime(11607): вызвано: android.view.InflateException: строка двоичного XML-файла № 16: ошибка при раздувании класса java.lang.reflect. Конструктор 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.app.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): в java.lang.reflect.Constructor.constructNative(собственный метод) 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.Lis tPreference.(ListPreference.java:50) 11-06 15:15:02.746: E/AndroidRuntime(11607): ... еще 25 - person Dale Wilson; 06.11.2013