如何将用户创建的对象保存到android中的存储?

时间:2013-03-08 13:59:15

标签: android save storage

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

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

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

这是内部存储如下所示。

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

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

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

1 个答案:

答案 0 :(得分: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