[英]savedInstanceState is not null but has no data
我有一個片段活動,在該活動中,我導航到搜索頁面,然后返回結果列表。 有時需要重新創建活動,因此我像這樣保存實例數據:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
System.out.println("Saving instance state!");
// Save the instance data
// Filter data
Intent mIntent = new Intent(this, BasicMapDemoActivity.class);
filter.addFilterToIntent(mIntent);
outState = mIntent.getExtras();
// Save date data
int year = currentDate.getYear();
int month = currentDate.getMonth();
int day = currentDate.getDay();
outState.putInt("YEAR",year);
outState.putInt("MONTH",month);
outState.putInt("DAY",day);
// Location data
double latitude = mapLocation.latitude;
double longitude = mapLocation.longitude;
outState.putDouble("LATITUDE",latitude);
outState.putDouble("LONGITUDE",longitude);
// Other
outState.putString("VIEW_MODE",viewMode.toString());
outState.putString("SORT_TYPE",sortType);
outState.putInt("ZOOM", mapZoom);
}
然后,我嘗試還原onCreate中的數據,但是當我到達那里時,捆綁包不為null,但是它不包含我保存到其中的任何數據。 以下所有get函數均返回零(在上述代碼塊的末尾,我確認數據為非零):
Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// If we are 're-creating', then get the old instance data, otherwise set defaults
if(savedInstanceState == null)
{
// Set up default instance data
currentDate = new Date(115,4,1);
filter = new ObajoFilter();
filter.start = currentDate;
filter.end = new Date(115,4,1,23,59,0);
viewMode = ViewMode.MAP;
sortType = "Distance";
mapLocation = userLocation;
mapZoom = 16;
} else {
// Get date data
int year = savedInstanceState.getInt("YEAR");
int month = savedInstanceState.getInt("MONTH");
int day = savedInstanceState.getInt("DAY");
currentDate = new Date(year,month,day);
關於什么可以清空捆綁包的任何想法? 據我了解,僅當應用程序完全銷毀后,savevedInstanceData才為空。
由於這一行, 所以outState = mIntent.getExtras();
您的outState指向不同的地址mIntent.getExtras() ,因此為空
您應該直接使用outState.putXX而不創建新對象。
您是否要在onSaveInstanceState
存儲要保留的信息,如下所示
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putParcelable("someobject", someobject);
outState.putBoolean("someboolean", someBoolean);
outState.putInt("someint", someInt);
super.onSaveInstanceState(outState);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.