繁体   English   中英

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

[英]Best way to store Resource id in Database on Android

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM