2015-04-18 17 views
11

我知道這可能非常簡單,但我無法弄清楚。如何調用recreate()?

我正試圖在操作後重新加載/重新創建活動。我知道我可以使用:

Intent intent = getIntent(); 
finish(); 
startActivity(intent); 

但在閱讀網站上的答案時,我被告知在11 api之後使用'recreate()'。任何幫助將不勝感激,謝謝!

回答

22

之前當使用recreate方法做

this.recreate() 

只是在API級別11加工程工作。如果你想包含更多的設備,你可以檢查API的水平,並實施再現方法以及

Intent intent = getIntent(); 
finish(); 
startActivity(intent); 

你可以使用兩個通過使if語句像...

if (android.os.Build.VERSION.SDK_INT >= 11){ 
//Code for recreate 
recreate(); 

}else{ 
//Code for Intent 
Intent intent = getIntent(); 
finish(); 
startActivity(intent); 
} 
+0

以上同樣的評論 - 非常簡單,非常感謝!還要感謝您的額外解釋,以及是否檢查(在您的項目中專門使用您的)。 –

+0

我正在線程中執行一些任務。我無法調用recreate()方法? – ManishNegi

+0

不完全確定你的意思?你有沒有嘗試mContext.recreate()? –

2

this.recreate()是它所需要的。將該代碼粘貼在您要重新加載的活動中的方法內。我有一個項目,這是一個按鈕點擊綁定,但你可以使用它,但你需要。

+0

令人難以置信的簡單,非常感謝! –

1

我對你的問題有點困惑,你自己在回答中回答了問題。調用該方法直接重建......

從文檔recreate()

導致此活動與一個新的實例來重建。由於配置更改,這會導致與創建Activity時基本相同的流程 - 當前實例將經歷其生命週期到onDestroy(),然後創建一個新實例。

呼叫recreate()從活動碼內而不是

Intent intent = getIntent(); 
finish(); 
startActivity(intent); 

重啓活動(API 11,其之後)。

this答案一個更通用的重新創建程序,即使是API/SDK 11

+0

謝謝CPU!只是想開始更新我的項目。出於某種原因,我被「這個」拋棄了。 –