我正在尝试将一个对象写入内部存储。
这会导致:“ java.io.NotSerializableException:android.support.v7.widget.RecyclerView”
public static void writeObject(Context context, String key, Object object)
throws IOException {
FileOutputStream fos = context.openFileOutput(key, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(object);
oos.close();
fos.close();
}
public static Object readObject(Context context, String key) throws IOException,
ClassNotFoundException {
FileInputStream fis = context.openFileInput(key);
ObjectInputStream ois = new ObjectInputStream(fis);
Object object = ois.readObject();
return object;
}
public class Squarevaluse implements Serializable{
String repoName;
String repoDescrption;
String repoOwnerName;
String repoFork;
String repoUrl;
String OwnerUrl;
Context context;
}
答案 0 :(得分:0)
将您的Squarevalue
类设为静态,然后删除context
字段:
public static class SquareValue implements Serializable {
String repoName;
String repoDescrption;
String repoOwnerName;
String repoFork;
String repoUrl;
String OwnerUrl;
}
如果该类不是静态的,则父类也需要实现Serializable。由于这是一个数据类,因此可以轻松将其设置为静态。
但是,上下文不是可序列化的,因此您不能在可序列化的类中使用它。您需要找到将Context对象传递到所需位置的其他方法(在RecyclerView Adapter中并不难:只需创建一个接受Context对象并将其分配给全局变量的自定义构造函数即可;如果您有权访问View对象,请使用view.getContext()
)。
我还重命名了您的类,以符合Java语法准则。类是TitleCase
,因此每个“单词”的首字母大写。