【问题标题】:Android: preferences not being stored automaticallyAndroid:偏好不会自动存储
【发布时间】:2011-02-27 07:49:02
【问题描述】:

我正在尝试使用首选项屏幕。我正在遵循在线教程中的所有步骤(一旦我无法让它工作,我发现了其他教程,步骤似乎很好)。我进入首选项屏幕,编辑值,返回调用活动(通过硬件返回按钮)。在 DDMS 透视图中,FileExplorer 显示 package_name_preferences.xml 文件,其中包含应存储的首选项。它包含:

 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
 <map>
 <string name="false">kg</string>
 </map>

虽然我期望(仅显示数据线)。

<string name="weight">kg</string>

另外,如果我只更改 1 个首选项,则相同的值会更改,而不是创建新行。我只是想编写自己的偏好类,将数据存储在文件或数据库中,但我知道偏好应该有效,只是不能正确保存我的东西。

编辑

使用的教程: Main Tutorial - 使用它作为基础,简化,因为到目前为止我只需要 3 个 listPreferences。

Another One - 在第一次安装 android 时使用了这个,所以在偏好部分参考这个

代码:(屏幕加载,所以我没有显示 Manifest)

public class MyPrefs extends PreferenceActivity {
   @Override
   public void onCreate(Bundle bundle) {
       super.onCreate(bundle);
       addPreferencesFromResource(R.xml.my_prefs);
   }
}

my_prefs.xml

<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="Value Settings">
        <ListPreference android:title="Distance"
                        android:summary="Metric (Kilometer) vs Imperial (Imperial)"
                        android:defaultValue="km"
                        android:key="@+id/distanceMesurement"
                        android:entries="@array/distance" 
                        android:entryValues="@array/distance_values"/>
        <ListPreference android:title="Weight"
                        android:summary="Metric (Kilogram) vs Imperial (Pound)" 
                        android:defaultValue="kg"
                        android:key="@+id/weightMesurement"
                        android:entries="@array/weight"
                        android:entryValues="@array/weight_values"/>
    </PreferenceCategory>
</PreferenceScreen>

从 MainScreen 调用 MyPrefs

Intent i = new Intent(MainScreen.this, MyPrefs.class);
startActivity(i);

数组.xml

<resources>
<string-array name="weight">
    <item name="kg">Kilogram (kg)</item>
    <item name="lb">Pound (lb)</item>
</string-array>
<string-array name="weight_values">
    <item name="kg">kg</item>
    <item name="lb">lb</item>
</string-array>
<string-array name="distance">
    <item name="km">Kilometer (km)</item>
    <item name="mi">Mile (mi)</item>
</string-array>
<string-array name="distance_values">
    <item name="km">km</item>
    <item name="mi">mi</item>
</string-array>
</resources>

【问题讨论】:

  • 你指的是哪个在线教程?如果您的代码与现有代码不同,请发布相关部分。

标签: android android-preferences


【解决方案1】:

您的密钥语法无效。使用:

android:key="weight"

【讨论】:

  • 哇,没想到要试试。奇迹般有效。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 2014-12-17
相关资源
最近更新 更多