2017-09-02 96 views
1

當我將查看值保存到共享首選項時,選擇「關鍵」值的好方法是什麼?將值保存到共享首選項的關鍵字段

sPref = getSharedPreferences("Settings",MODE_PRIVATE); 
     SharedPreferences.Editor ed = sPref.edit(); 
     ed.putBoolean("R.id.CashButton",CashButton.isChecked()); 
     ... 
     ed.commit(); 

現在我正在使用像「R」路徑一樣的密鑰。 但是,如果我決定更改我的視圖ID,我應該自己重構我的代碼,因爲Android Studio不會將此用法用作字符串。

+1

創建類的內部靜態字符串。 static final String MY_KEY =「my_key」; –

+1

我的目標是達到良好的代碼可讀性,這就是爲什麼我想使用「視圖ID」一樣的「關鍵」。如果我會使靜態刺痛它不會使任何東西。可以說,我有查看ID「R.id.Exit」和靜態鍵字符串「退出」,然後我決定改爲「R.id.SaveAndExit」,但我的靜態鍵字段保持「退出」,我需要更正我的自我如果我想成爲他們一樣。這就是爲什麼我開始尋找一些想法。 – Andrew

回答

0

這不是一個很好的做法來設置這種方式。

這主要是一個基於意見的問題,但是如果您需要將視圖ID作爲關鍵字,那麼我可以建議一種替代方案。

創建一個散列表並存儲一個靜態字符串鍵並將其與視圖ID進行映射。所以你只需要改變鍵。

HashMap<Integer, String> mapIdToKey = new HashMap<>(); 
mapIdToKey.put(R.id.action_settings, "ActionSettingsKey"); 
....... 

以此爲

sPref = getSharedPreferences("Settings",MODE_PRIVATE); 
SharedPreferences.Editor ed = sPref.edit() 
ed.putBoolean(mapIdToKey.get(R.id.action_settings),CashButton.isChecked()); 
... 
ed.commit(); 
+0

謝謝你的例證。 – Andrew

+0

如果這有幫助,請接受答案 @AndrewKubrik –

+0

如果這不是很好的做法,你能告訴我什麼是選擇關鍵值的常用方法。類中的靜態字符串? – Andrew