簡體   English   中英

使用onSaveInstanceState在方向更改時序列化對象的正確方法是什么?

[英]What is the correct way to serialize objects on orientation change using onSaveInstanceState?

我在方向更改時序列化logCalculation方法對象。

更改方向時, logCalculation返回的值將保留在Bundle outState 因此它應該顯示數據。

但是,在更改方向時,該列表為空。 它沒有從savedInstanceState.getSerializable("calcLogs")獲取值

我究竟做錯了什么 ?

這是我的代碼-

ArrayList日志=新的ArrayList();

@Override
    public void onSaveInstanceState(final Bundle outState) {
        outState.putSerializable("calcLogs", calcLogs);
    }


if (savedInstanceState != null) {
    try
    {
        calcLogs = (ArrayList<LogChartData>) savedInstanceState.getSerializable("calcLogs");
    }
    catch(ClassCastException e)
    {
        e.printStackTrace();
    }
}


if(calcLogs == null)
{
    calcLogs = logCalculation(Curcal.getTime());
}

public ArrayList<LogChartData> logCalculation(final Date dt) {

        getActivity().runOnUiThread(new Runnable() {

        public void run() {


        logss.clear();
        alert.clear();
        logss = fillChartData(dt);

        // Some more data here..

        }
    }

        return logss;
}

調用super.onSaveInstanceState()以便根據需要處理super.onSaveInstanceState()

@Override
    public void onSaveInstanceState(final Bundle outState) {
        outState.putSerializable("calcLogs", calcLogs);
        super.onSaveInstanceState(outState);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM