【问题标题】:Activity not reading serialized objects from another activity活动未从另一个活动中读取序列化对象
【发布时间】: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


【解决方案1】:

我当然知道出了什么问题。

改变

FileInputStream fis = new FileInputStream("purchased_songs.obj");

FileInputStream fis = openFileInput("purchased_songs.obj");

【讨论】:

    猜你喜欢
    • 2013-01-12
    • 2015-09-17
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多