2017-01-03 28 views
1

如何根據請求獲取給予此方法的包(Bundle outState)?如何根據請求接收活動狀態實例(包)?

@Override 
protected void onSaveInstanceState(***Bundle outState***) { 
    super.onSaveInstanceState(outState); 

    // Only if you need to restore open/close state when 
    // the orientation is changed 
    if (adapter != null) { 
     adapter.saveStates(outState); 
    } 
} 

回答

0

這是在你的活動OnCreate方法發送的Bundle

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (savedInstanceState != null) { 
     savedInstanceState.getString("bla"); 
    } 
} 

請注意,您必須檢查null,因爲您第一次創建活動時它將爲空,因爲沒有以前的狀態。

看到https://developer.android.com/guide/components/activities/activity-lifecycle.html#oncreate以獲取更多信息

0

可以回用下面的方法得到保存包:在Bundle實例

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
// get your saved bundles back here 
} 

Just refer this developer page, you will get clear idea about this

+0

@KarlssonMakhno你只能的onSaveInstanceState內()存儲數據,並且可以從的onCreate()onRestoreInstanceState()得到它; –

0

你可以傳遞數據和拿回來的onCreate( ) 方法。像下面

outState.putString("key1", "data1"); 
outState.putBoolean("key2", "data2"); 
outState.putInt("key3", "data3"); 

,並得到的onCreate像下面

if (savedInstanceState != null){ 
      data_1 = savedInstanceState.getString("keys1"); 
      data_2 = savedInstanceState.getBoolean("keys2"); 
      data_3 = savedInstanceState.getInt("keys3"); 

}