我正在尝试使用偏好设置屏幕。我正在遵循在线教程的所有步骤(一旦我无法使其工作,我找到了其他教程,并且步骤似乎没问题)。我进入首选项屏幕,编辑值,返回调用活动(通过硬件返回按钮)。在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);
arrays.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>
答案 0 :(得分:2)
您的密钥语法无效。使用:
android:key="weight"