我在片段变量中有一个 Hashmap ,用于查看关系的位置(int)。 有时我可以在onCreate中读取对象,但没有数据(大小为0),但是当我想在onPause或onStop上将片段激活到内部存储时,它给了我一个奇怪的错误,没有任何线索是什么原因它
android.widget.RelativeLayout
片段onPause:
@Override
protected void onPause() {
super.onPause();
try
{
FileOutputStream fileOutStream = getContext().openFileOutput("hashMap", Context.MODE_PRIVATE);
ObjectOutputStream objOutStream = new ObjectOutputStream(fileOutStream);
objOutStream.writeObject(HashMap);
objOutStream.close();
Log.v("Fragment:", "Done Writing "+HashMap.size());
}catch (IOException e)
{
Log.v("Fragment:","MainPage(onStop): "+e.getMessage()+e.getLocalizedMessage());
}
}
打开应用时从内部存储中读取以下行。
try {
FileInputStream f = getContext().openFileInput("hashMap");
ObjectInputStream s = new ObjectInputStream(f);
HashMap= (HashMap<Integer, View>) s.readObject();
s.close();
Log.v("Fragment:", "Done Reading " + HashMap.size());
} catch (ClassNotFoundException | IOException e) {
Log.v("Fragment:", "MainPage(onCreate): " + e.getMessage());
}
答案 0 :(得分:1)
我认为
只有支持java.io.Serializable接口的对象才能写入流 根据{{3}}
View似乎没有实现此接口。