2015-02-09 16 views
4

是否必須使用包設置參數來設置數據? 這裏有什麼問題?如何將數據設置爲片段(setArgumets()vs setters方法)

MyFragment frag = new MyFragment() 
frag.setData(mSchoolData); 

//add to back stack stuff. 
+0

你的意思是[this](http://stackoverflow.com/a/25564388/4385913)? – 2015-02-09 11:23:00

+0

是否要將對象「mSchoolData」傳遞給fragment? – sUndeep 2015-02-09 11:26:13

+0

這裏的問題是碎片可以被系統重新創建,你的數據將會丟失。 – Tobrun 2015-02-09 11:27:36

回答

5

使用setArgs(),您將確保該片段可以重現由於生命週期事件......同時,通過傳遞參數用自己制定者可能無法正確在某些circustances工作。這就是爲什麼絕對推薦使用Args或使用Intent extras,如果片段被重新創建,這些將總是由系統自動提供。

+0

如果我將該變量聲明爲Static,該怎麼辦? – Skynet 2015-02-09 11:28:19

+0

也可以工作..但它通常不是一個推薦的做法,雖然它可能適合某些特定的解決方案。 – 2015-02-09 11:29:48

+0

我的問題出於好奇,我會補充一點,使用靜態變量是不鼓勵的,因爲它們是全局性的,如果你依賴很多靜態變量,它會變得非常非常令人討厭。 – Skynet 2015-02-09 11:30:57