在Android上的数据库中存储资源ID的最佳方法

时间:2014-01-28 09:57:24

标签: android database android-resources

在我的应用程序中,我希望能够在数据库中存储某些图标的资源ID。我想这不是保存,因为在后期阶段(应用程序升级)我可能想要为应用程序添加新图标,所以所有id都可能会改变?如果我不想将图标存储为blob,那么存储资源的最佳做法是什么?

作为一个例子,假设我有一个游戏1.0,我让用户从一个头像列表中为他的角色选择一个头像。我想在DB中存储这个头像ID,并确保如果我在游戏1.1中添加更多头像 - 用户仍然会看到他的选择。

1 个答案:

答案 0 :(得分:6)

最好的方法(在我看来)是存储资源条目名称。

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

因此,要存储图标的SQLite数据库列将具有类型TEXT。你是对的,存储资源ID是一种不好的做法,因为它们是在你编译应用程序时重新创建的,所以你不能依赖它们而不是改变(我学到了很多东西,所有应用程序的图标都搞砸了)。

要在需要时从String获取资源ID,请调用

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

请注意,getResources()getPackageName()都是来自Context的方法,因此您需要引用您的应用程序/活动上下文才能调用这些方法。