PreferenceActivity错误:关闭活动后不显示所选选项

时间:2011-11-10 07:41:21

标签: android sharedpreferences android-preferences preferenceactivity

当我按下它时,该值在SharedPreference中保存得很好,但是当我再次打开PreferenceActivity时它没有显示。 如果我不放android:entryValues ,它就会运行,但我无法使用它,因为使用不同的语言有一些区别,以便查看首选项的值是什么。

¿我知道我该怎么办?

感谢阅读。

代码:

PreferencesMenu 活动

public class PreferencesMenu extends PreferenceActivity  
{
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
     super.onCreate(savedInstanceState);
     setDefaultKeyMode(MODE_PRIVATE);

     addPreferencesFromResource(R.layout.preferences);
     getPreferenceManager().setSharedPreferencesName("Gat_Preferences");

 }
}  

一些 strings.xml

    <string-array name="menu_preference_general_order_array">
        <item>Default</item>
        <item>Alphabetical</item>
    </string-array>     
    <string-array name="menu_preference_general_order_values">
        <item>default</item>
        <item>alphabetical</item>
    </string-array>

preferences.xml 布局

<?xml version="1.0" encoding="utf-8"?>
  <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
     ...
<PreferenceCategory android:title="@string/menu_preference_general">
    <ListPreference 
        android:key="list_order"
        android:persistent="true"
        android:title="@string/menu_preference_general_order_title"
        android:summary="@string/menu_preference_general_order_description"
        android:entries="@array/menu_preference_general_order_array"
        android:entryValues="@array/menu_preference_general_order_values"/> 
    </PreferenceCategory>  
</PreferenceScreen>

mod

我使用android 2.1,我不能使用新的片段首选项。

2 个答案:

答案 0 :(得分:0)

在加载所有内容之前,您需要告诉首选项API您要使用的文件名。

而不是:

 addPreferencesFromResource(R.layout.preferences);
 getPreferenceManager().setSharedPreferencesName("Gat_Preferences");

这样做:

 getPreferenceManager().setSharedPreferencesName("Gat_Preferences");
 addPreferencesFromResource(R.layout.preferences);

在旁注中,请勿使用R.layout.preferences。您应该使用R.xml.preferences,将文件放在/res/xml下,而不是/res/layout下。它确实按您的方式工作,但不能保证在所有API版本中都能使用,因为它不是使用首选项XML文件的默认方式。

答案 1 :(得分:0)

您的preferences.xml应该在res/xml。 此外,您应该分配默认值

<ListPreference 
    android:key="list_order"
    android:persistent="true"
    android:title="@string/menu_preference_general_order_title"
    android:summary="@string/menu_preference_general_order_description"
    android:entries="@array/menu_preference_general_order_array"
    android:entryValues="@array/menu_preference_general_order_values"
    android:defaultValue="default"
    />