2014-01-28 21 views
2

在我的應用程序中,我希望能夠將一些圖標的資源ID存儲在數據庫中。我想這不是保存,因爲在後面的階段(應用程序升級),我可能想添加新的圖標到應用程序,所以所有的ID可能會改變?如果我不想將圖標存儲爲blob,那麼存儲資源的最佳做法是什麼?在Android上的數據庫中存儲資源ID的最佳方法

舉個例子,假設我有一個遊戲1.0,我讓用戶從頭像列表中爲他的角色選擇一個頭像。我想在數據庫中存儲這個頭像ID,並確保如果我在遊戲1.1中添加更多頭像 - 用戶仍然會看到他的選擇。

+2

你需要更清楚。圖標保存在drawables文件夾中。爲什麼你還需要在數據庫中引用它們? –

+0

啊,好的。我想保存用戶從我提供的列表中選擇的圖標,以便在稍後的應用啓動中顯示所選圖標。 – Fossor

+0

你在說應用程序圖標嗎?因爲在應用程序簽名後您無法修改清單。 –

回答

0

最好的方法(在我看來)是存儲資源項名稱。

String iconName = getResources().getResourceEntryName(R.drawable.your_icon); 

因此,您想要存儲圖標的SQLite數據庫列的類型爲TEXT。你說得對,存儲資源ID是一種不好的做法,因爲它們是在你編譯應用程序時重新創建的,所以你不能依賴它們而不改變(我學會了這一點很難,所有我的應用程序的圖標都搞砸了)。

要想從字符串資源ID,當你需要的時候,調用

int resID = getResources().getIdentifier(iconName, "drawable", getPackageName()); 

注意兩個getResources()getPackageName()來自Context方法,所以你需要有參考您的應用程序/活動上下文中能夠調用這些方法。

+1

這是正確的答案。爲我工作,4年前:) – Fossor

相關問題