我想将ArraList<MyClass>
保存到内部存储。所以,我已经将Serializable实现为具有ArrayList和MyClass的类。代码如下所示:在Android中保存序列化ArrayList抛出NotSerializableException
public class CustomAdapter extends BaseAdapter implements Serializable {
public ArrayList<TaskItems> taskList = new ArrayList<TaskItems>();
// some fields and variables
// some methods which use below method saveFile()
public void saveFile() {
try {
String filename = "daytodaytasks";
FileOutputStream fileOutputStream = mContext.openFileOutput(filename, Context.MODE_PRIVATE);
//mContext is MainActivity context
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(taskList);
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
class TaskItems implements Serializable {
String smallRectUpText;
String smallRectDownText;
String bigRectText;
}
}
在类CustomAdapter中有使用saveFile()方法的方法。所有的方法都是使用类引用从MainActivity onClick()方法中调用的。当我运行该程序,并按下按钮,可以使用的onClick方法获得:
java.io.NotSerializableException: com.something.MainActivity
于是,我就实现Serializable到MainActivity,但后来我从AppCompatAcitvity相同的异常,这MainActivity延伸。你可以帮帮我吗 ?
它的工作原理,但我不明白为什么类TaskItems访问CustomAdapter.this。它没有任何参考上下文。 – Michal
class TaskItems是内部类,因此它可以使用CustomAdapter.this访问外部类成员变量,通过使类TaskItems成为静态,我们阻止外部类的成员变量的访问。 – Raman