【发布时间】:2013-07-31 18:26:25
【问题描述】:
本质上,我要做的是在一个活动中保存一个字符串数组列表,然后在另一个活动中读取它们。该文件已创建(我可以在 DDMS 中看到它),但由于某种原因,我无法让活动读取对象。
阅读代码如下:
try {
FileInputStream fis = new FileInputStream("purchased_songs.obj");
ObjectInputStream ois = new ObjectInputStream(fis);
purchasedSongs = (ArrayList<String>) ois.readObject();
ois.close();
for(int i=0;i<purchasedSongs.size();i++)
Log.d("purchased songs",purchasedSongs.get(i));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这是编写代码:
try {
FileOutputStream fos = openFileOutput("purchased_songs.obj",MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(purchasedSongs);
os.close();
}catch(Exception e){
e.printStackTrace();
}
【问题讨论】:
-
这是个坏主意,你在做什么。将你的东西放入 Bundle 中并传递 bundle。
-
@MarcinOrlowski 我对 Android 编程比较陌生,但是如果用户关闭应用程序,我需要保存这些信息,然后在用户稍后再次启动它时准备好它。我可以用捆绑包做到这一点吗?
-
您是否考虑过使用 SQLite 存储数据?你可以在这里阅读:developer.android.com/guide/topics/data/data-storage.html
-
@Karakuri 我已经考虑过了,但认为这要容易得多。我只是保存了用户购买的歌曲字符串的 ArrayList,以便 UI 可以自行更新并告诉他们他们购买了什么和没有购买什么。
-
您可以使用 SQLite 和适当的 ContentProvider 完成所有这些工作。 Android 有一些 API,它们还有助于在您的 SQLite 数据更改时从 UI 线程加载信息并获取新数据(也在后台)。
标签: android serialization arraylist