来自资源的参考资源ID

时间:2017-12-21 14:45:16

标签: android android-resources android-productflavors

我有一个包含多种风格的项目,applebanana。它引用存储在raw资源目录中的文件。我希望避免为每个database.sqlite命名,而是保持名称与风味apple.sqlitebanana.sqlite相关。在我的代码中,我有一行读作

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

是否有可能创建一个本质上可以链接到正确id的整数资源,或者我最好在每个可以链接到它的风格中创建一个类?

1 个答案:

答案 0 :(得分:2)

您可以为构建类型,产品风格(例如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>

  • 使用R.raw.whatevermain

  • 代码中标识此资源

(您可以将whatever替换为,等等)

在这里,您要为资源设置一个公共别名(whatever),将别名的特定于风味的定义指向特定于风味的资源。