2016-10-27 34 views
0

私は検索ページに移動した後、結果をリストに戻すフラグメントアクティビティを持っています。時には活動を再作成する必要があるので、私はそうのような私のインスタンスのデータを保存しています:savedInstanceStateはnullではありませんが、データはありません

@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); 

バンドルを空にすることができるもの上の任意のアイデアを?私が理解しているところから、アプリケーションが完全に破棄されると、savedInstanceDataは空になります。

+0

ようonSaveInstanceState何かに保持する情報を格納しています。 'onSaveInstanceState'と' onCreate'の中にlogcatを 'year'の印刷値として書くことができますか?それからあなたの質問に更新してください –

答えて

0

この行のためoutState = mIntent.getExtras();

異なるアドレスへのあなたのoutStateポイントmIntent.getExtras()、だから、あなたは新しいオブジェクトを作成せずに、直接outState.putXX使用する必要があります

空です。

0

は、あなたがあなたのコードが正しい次

@Override 
public void onSaveInstanceState(Bundle outState) { 
    outState.putParcelable("someobject", someobject); 
    outState.putBoolean("someboolean", someBoolean); 
    outState.putInt("someint", someInt); 
    super.onSaveInstanceState(outState); 
} 
関連する問題