Android onRestoreInstanceState()中的活动失败-空指针异常

Android onRestoreInstanceState()中的活动失败-空指针异常,android,android-activity,Android,Android Activity,我有一个对象的数组列表。我正试图保存它,如下面代码中所述。当我尝试在onRestoreInstanceState()中获取对象时,得到的是NullPointerException。请告诉我代码需要更正的地方 @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Log.i("MemoryGame", "onSaveInsta

我有一个对象的数组列表。我正试图保存它,如下面代码中所述。当我尝试在onRestoreInstanceState()中获取对象时,得到的是NullPointerException。请告诉我代码需要更正的地方

  @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