【问题标题】:onSaveInstanceState is called, but savedInstanceState in onCreate method throws nullonSaveInstanceState 被调用,但 onCreate 方法中的 savedInstanceState 抛出 null
【发布时间】:2023-03-15 13:29:01
【问题描述】:

将一些可序列化的值放入savedinstancestate,但savedInstanceState 为null。 onSaveInstanceState() 与日志消息一起调用,代码运行正确,但在 onCreate 方法中,在恢复数据后捕获了空指针并且保存的状态为空。课程是正确的。 (可序列化)已设置。我找不到错误。感谢帮助。

@override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.mb_activity);
            mBList = new ArrayList<MBClass>();
            mKList = new ArrayList<MKClass>();
            nAList = new ArrayList<AClass>();
            aList = new ArrayList<AClass>();
            try {
                mBList = (ArrayList<MBClass>) savedInstanceState.getSerializable("MBList");
                mKList = (ArrayList<MKClass>) savedInstanceState.getSerializable("MKList");
                aList = (ArrayList<AClass>) savedInstanceState.getSerializable("AList");
                nAList = (ArrayList<AClass>) savedInstanceState.getSerializable("NAList");

                Log.i("MB", "State geschrieben");

            } catch (NullPointerException ne) {
                //ne.printStackTrace();
                Log.i("MB", "State Null");
            }
    }
    @override    
    public void onSaveInstanceState(Bundle savedInstanceState) {
                savedInstanceState.putSerializable("MKList", (Serializable) mKList);
                savedInstanceState.putSerializable("MBList", (Serializable) mBList);
                savedInstanceState.putSerializable("NAList", (Serializable) nAList);
                savedInstanceState.putSerializable("AList", (Serializable) aList);
                super.onSaveInstanceState(savedInstanceState);
                Log.i("MB", "onSaveInstanceState");
            }

【问题讨论】:

  • 你让你的类可序列化了吗?
  • 是的,数据是串行发送的

标签: android null onsaveinstancestate android-savedstate


【解决方案1】:

Parcelable 替换Serializable 对我有用。

@Parcelize // this annotation is needed in Kotlin. Not Sure about Java
class DataClass implements Parcelable {
   //Data members
}

【讨论】:

  • 我会尝试,但这需要一些时间,还有另一个问题
猜你喜欢
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多