ListPreference导致PreferenceActivity出现膨胀错误

时间:2013-11-06 17:30:18

标签: android android-preferences listpreference

我正在尝试一个非常简单的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):at java.lang.reflect.Method.invokeNative(Native Method)   11-06 15:15:02.746:E / AndroidRuntime(11607):at java.lang.reflect.Method.invoke(Method.java:511)   11-06 15:15:02.746:E / AndroidRuntime(11607):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)   11-06 15:15:02.746:E / AndroidRuntime(11607):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)   11-06 15:15:02.746:E / AndroidRuntime(11607):at dalvik.system.NativeStart.main(Native Method)   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):at 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):at java.lang.reflect.Constructor.constructNative(Native Method)   11-06 15:15:02.746:E / AndroidRuntime(11607):at 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>

我的目标sdks是11到18(现在)并且它没有工作18(我的模拟器出现问题)。我知道我可以使用PreferenceFragment,但我打算稍后定位较旧的sdks。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在首选项文件中,您有:

android:entries="@array/menu_pref_language_titles"

在您拥有的字符串文件中

name="menu_pref_language"