1

在我的应用程序中,我有用户自己创建的抽认卡对象。用户可以根据需要创建任意数量的抽认卡,但是当他们退出应用程序并返回时,他们需要能够看到他们之前创建的抽认卡并能够删除它们。我设置了它,以便他们可以创建/删除,但如果他们退出应用程序,他们将自动删除。保存抽认卡信息的最佳方法是什么?它目前至少有 3 个字符串,标题、正面和背面。

我看了一些,但不确定如何在 android 开发者网站上的保存选项中包含所有三个字符串。

例如共享首选项,看起来您只能保存某些设置,但它允许用户更改这些设置。内部/外部存储虽然非常不同,但会引发相同的问题,如何拥有无限数量的对象,尤其是如何分别保存所有三个字符串。

这是内部存储,如下所示。

String FILENAME = "hello_file"; 
String string = "hello world!";  
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
fos.write(string.getBytes()); 
fos.close();

我看不到如何保存多个对象或 3 个不同的字符串。

有人看到我的问题的解决方案吗?

4

1 回答 1

1

SharedPreferences 似乎是您实现它的最简单方法,我认为您误解了它们的用法,或者将名称与“首选项”屏幕混淆了,因为您可以使用 SharedPreferences 方法来保存任何内容(嗯,任何基本数据类型)坚持不懈。

例如,我使用它来保存我的应用程序的 JSON 数据(就将用户的抽认卡保存在 JSONArray 中而言,这可能是一种不错的方式)。

/**
 * Retrieves data from sharedpreferences
 * @param c the application context
 * @param pref the preference to be retrieved
 * @return the stored JSON-formatted String containing the data 
 */
public static String getStoredJSONData(Context c, String pref) {
    if (c != null) {
        SharedPreferences sPrefs = c.getSharedPreferences("AppPreferences", Context.MODE_PRIVATE);
        return sPrefs.getString(pref, null);
    }
    return null;
}

/**
 * Stores the most recent data into sharedpreferences
 * @param c the application context
 * @param pref the preference to be stored
 * @param policyData the data to be stored
 */
public static void setStoredJSONData(Context c, String pref, String policyData) {
    if (c != null) {
        SharedPreferences sPrefs = c.getSharedPreferences("AppPreferences", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sPrefs.edit();
        editor.putString(pref, policyData);
        editor.commit();
    }
}

其中字符串 'pref' 是用于引用该特定数据的标记,例如:“taylor.matt.data1”将引用一段数据,可用于从 SharedPreferences 检索或存储它

于 2013-03-08T14:06:04.847 回答