我覺得有一些東西我真的不明白的機制的onSaveInstanceState: 我有一個包含幾個DATAS類:什麼保存在onSaveInstanceState?
public class Site implements Serializable {
private static final long serialVersionUID = 1L;
// used to save device language when the application starts
private String deviceLanguage;
private int deviceWifiState;
private int deviceWifiNetworkId;
private String localeLanguage;
// URLs to access various files to describe site and points of interests
private String wifiSSID = null;
private String wifiWPAKey = null;
private String url = null;
private String flagsDir = "flags/";
private String flagsUrl = null;
private String mediasDir = "medias/";
private String mediasUrl = null;
private String descriptionFileUrl = null;
private FragmentActivity activity;
private ArrayList<Language> listLanguages = null;
private ArrayList<PointOfInterest> listPointsOfInterest = null;
...
// and some getter/setter
}
所以MainActivity
哄擡Fragment_init
其開始填寫站點類。 主要是ArrayList。
這Fragment_init
是不是在後面的堆棧。 作業完成後,它會自動提交()一個新的Fragment_selectLanguage
,用戶在繼續初始化之前設置其語言。 完成後,此線程將放入後退堆棧中,並提交第三個Fragment_play()。
所有片段實施以下onsaveInstanceState
方法,Bundle將其onViewCreated
方法取回。
@Override
public void onSaveInstanceState(Bundle saveInstanceState) {
super.onSaveInstanceState(saveInstanceState);
saveInstanceState.putSerializable(FRAGMENT_SELECT_LANGUAGE_SITE, (Serializable) site);
}
而在第三個片段,如果我改變則屏幕方向回到以前的片段,我得到一個空指針異常,當它使用listeLanguages,正常初始化在第一個片段,它是空的。
當我檢查Site類時,我發現大部分數據都在裏面,但有些數據通常是空的。
我錯過了什麼?我在想整個Site類都被救了!
Regards,
謝謝@Alex我寧願不花大量時間爲我的項目的一小部分開發這樣的功能。 – johng