2012-01-27 39 views
0

這個問題更像是關於您如何做的討論。爲我的活動的所有視圖分享價值

我正在開發一個具有創建頭像的應用程序,但是這個創建過程發生在兩個不同的活動中。

在第一個用戶選擇是否是男人還是一個女人和一個名字,在接下來的活動,用戶必須選擇自己的臉,頭髮,衣服等

由於頭髮和等的意見如果用戶是男性還是女性,則會發生變化您將如何實現將性別值傳遞給所有視圖的方法?

我想使用靜態成員來保存值,以便我可以訪問我的視圖內,或者我應該使用SharedPreferences來做到這一點。

我認爲使用SharedPreferences是一個更優雅的方式來做到這一點,但我想知道是否沒有其他更好,更優雅的方式來做到這一點。

有沒有人想過其他的實現?

回答

2

如果它只有一個像「性別」這樣的小信息,那麼使用「Static」變量沒有看到太大的傷害(Ofcourse,如果你的應用程序在後臺崩潰,靜態變量將變爲空)。

如果你想要的信息是persistent(但我沒有看到你需要這個),SharedPreference會很好。

另外一個選擇是你可以擴展application類來存儲活動間的靜態數據。

+0

擴展應用程序真的很不錯,雖然對於這種情況它看起來像它太多了,我想要的東西... 最後我把值放在SharedPreference中......但我確實相信靜態方法也可以.. – YasuDevil 2012-02-02 19:47:54

1

您可以通過啓動活動Intent將性別傳遞給下一個活動。例如:

Intent intent = new Intent(this, NEXT_ACTIVITY.class) 
intent.putExtra("gender", genderVariable) 
startActivity(intent); 

和檢索上的onCreate()這樣的NEXT_ACTIVITY類值:

String genderVariable = "" 
Bundle parms = getIntent().getExtras() 
if (parms != null) genderVariable = parms.getString("gender") 

然後,通過性別對所有的意見,並堅持在genderVariable上SharedPreferences或onSavedInstanceState束。我更喜歡onSavedInstanceState。

希望它有幫助。

+0

我試圖找出一種方法,所以我不需要將性別傳遞給我所有的觀點。 是的,目前我正在使用Intents將性別從一個活動傳遞給另一個活動。 – YasuDevil 2012-01-27 18:16:34

+0

您可以將「性別」值傳遞給所有視圖,並在每個視圖上實現onSavedInstanceState以在內部處理它。這樣,當調用實際實例狀態時,您的觀點將知道他們正在處理的是什麼「性別」。但是你必須至少向他們傳遞一次「性別」。 – Andres 2012-01-27 18:56:52

+0

我看到這是一個很好的解決方案:),我已經實現了使用SharedPreferences和我的自定義視圖的構造函數,我閱讀共享偏好來獲取當前性別。 – YasuDevil 2012-02-02 19:45:56

0

我認爲有很多方法,我認爲哪4個更好。它當然取決於你想存儲什麼樣的數據。

  1. 對於列表或hashmaps,使用單例類將有所幫助。
  2. 使用靜態類將有所幫助,但可能會泄漏內存。你應該非常小心,並且在發佈你的應用程序之前總是使用logcat,MAT進行檢查。
  3. 使用首選項或數據庫。
  4. 將數據作爲意向傳遞(如果需要,可以parcelable)。
0

使用SharedPreferences將是跨應用程序共享某些全局值的更好方法。

相關問題