Android onRestoreInstanceState()中的活动失败-空指针异常
我有一个对象的数组列表。我正试图保存它,如下面代码中所述。当我尝试在onRestoreInstanceState()中获取对象时,得到的是NullPointerException。请告诉我代码需要更正的地方Android onRestoreInstanceState()中的活动失败-空指针异常,android,android-activity,Android,Android Activity,我有一个对象的数组列表。我正试图保存它,如下面代码中所述。当我尝试在onRestoreInstanceState()中获取对象时,得到的是NullPointerException。请告诉我代码需要更正的地方 @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Log.i("MemoryGame", "onSaveInsta
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.i("MemoryGame", "onSaveInstanceState");
outState = new Bundle();
outState.putSerializable("saveMemory", (Serializable) memory);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.i("MemoryGame", "onRestoreInstanceState");
ArrayList<Memory> retrievedMemory = (ArrayList<Memory>) savedInstanceState.getSerializable("saveMemory");
Log.i("MemoryGame", "onRestoreInstanceState : memory " + retrievedMemory.get(0).getPictureName());
}
由于这条线,您无法获取数据
outState = new Bundle();
不要创建对象evary time..仅当Bundle为null时创建..所以像这样检查
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.i("MemoryGame", "onSaveInstanceState");
if (outState==null) {
outState = new Bundle();
}
outState.putSerializable("saveMemory", (Serializable) memory);
}
您的内存
类也必须实现类似的可序列化
接口
public class Memory implements Serializable
您的savedInstanceState是否为空?savedInstanceState中的值为Bundle[{android:viewHierarchyState=Bundle[{android:views=android.util。SparseArray@41bb2890}]}]@iappmaker您有解决方案吗?没有。您的内存实现可串行化正在等待一些建议谢谢您的及时支持。我是通过你的明确步骤得到的答案中的“检查空值”建议是错误的。作为参数传递给
活动#onSaveInstanceState
的包永远不会为空。
public class Memory implements Serializable