0

我正在编写一个简单的 android 应用程序,它需要存储 2 个孩子的详细信息,即姓名、年龄、玩具。我打算使用共享首选项来做到这一点。这是我的xml:

prefs.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
  <PreferenceScreen android:title="Edit Child Details">
    <PreferenceScreen android:title="Edit Child 1 Details">
      <EditTextPreference android:title="Name" android:dialogTitle="Name of Child 1" android:key="name1" />
      <EditTextPreference android:title="Age" android:dialogTitle="Age of Child 1" android:key="age1" />
      <EditTextPreference android:title="Toy" android:dialogTitle="Toy of Child 1" android:key="toy1" />
    </PreferenceScreen>
    <PreferenceScreen android:title="Edit Child 2 Details">
      <EditTextPreference android:title="Name" android:dialogTitle="Name of Child 2" android:key="name2" />
      <EditTextPreference android:title="Age" android:dialogTitle="Age of Child 2" android:key="age2" />
      <EditTextPreference android:title="Toy" android:dialogTitle="Toy of Child 2" android:key="toy2" />
    </PreferenceScreen>
  <ListPreference android:entries="@array/child_array" android:entryValues="@array/child_array" android:key="child_selector" android:title="Select Child"/>
</PreferenceScreen>

strings.xml
<string-array name="child_array">
      <item >1</item>
      <item >2</item>   
</string-array>

我知道这在 sqllite 数据库或本地存储中可能会更好,但它只是一个基本的应用程序,我仍然是初学者。

然后我在代码中尝试做的是查询 child_selector(即用户将选择孩子 1 或 2)首选项,然后我阅读了我的应用程序的相应孩子的详细信息。

不太确定这是否是做事的最佳方式,因此欢迎任何建议,因为我不确定如何参考孩子的详细信息。我有一些基本的 unix 脚本技能,我知道这不是一个数组,但不确定使用 ${string}[$number] 的 java 等价物是否可行

4

1 回答 1

1

我不确定您的问题是什么,但是如果您不需要首选项屏幕而只需要共享首选项,您也可以这样做。您可以像这样直接保存到共享首选项:

// Retrieve an editor to modify the shared preferences.
SharedPreferences.Editor editor = mySharedPreferences.edit();
// Store new primitive types in the shared preferences object.
editor.putBoolean("isTrue", true);
editor.putFloat("lastFloat", 1f);
editor.putInt("wholeNumber", 2);
editor.putLong("aNumber", 3l);
editor.putString("textEntryValue", "Not Empty");
// Commit the changes.
editor.commit();

希望对你有帮助


更新

共享首选项是保存一些快速数据的最简单方法。或者,您也可以保存到文件中,但我不建议这样做。还有数据库……与共享偏好相比,它需要大量的代码行。

因此,如果只是为了快速测试,我会使用共享偏好。

如果您不需要在应用程序退出时保存数据,您也可以创建自己的子类列表。但是只有在您关闭应用程序之前数据才可用。

BR

于 2012-07-26T08:04:11.867 回答