从资源中引用资源 ID

Reference resource id from resource

我有一个项目有多种风格,applebanana。它引用存储在 raw 资源目录中的文件。我宁愿避免命名每个 database.sqlite,而是让名称与风味相关,apple.sqlitebanana.sqlite。在我的代码中,有一行内容为

getResources().openRawResource(R.raw.apple);

是否可以创建一个基本上可以 link 到正确 id 的整数资源,或者我最好在每个具有 [=22= 的口味中制作一个 class ] 到了吗?

您可以为构建类型、产品风格(例如 applebanana)和构建变体创建专用源集。您可以创建 resource aliases,为资源提供另一个标识符。你应该能够将这些混合起来得到你想要的东西。

根据你的问题,我假设你的项目中有 apple/res/raw/apple.sqlitebanana/res/raw/banana.sqlite。如果是这样,那么:

  • 创建apple/res/values/ids.xml,里面有<item type="raw" name="whatever">@raw/apple</item>

  • 创建banana/res/values/ids.xml,里面有<item type="raw" name="whatever">@raw/banana</item>

  • main

  • 中的代码中使用 R.raw.whatever 标识此资源

(你可以用什么替换 whatever

在这里,您正在为资源设置一个通用别名 (whatever),将别名的特定风格定义指向特定风格的资源。