我想將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