【问题标题】:Is there a way to arbitrarily load Resources at runtime in Android?有没有办法在Android运行时任意加载资源?
【发布时间】:2010-03-07 22:30:33
【问题描述】:

我的 Android 应用中有一些 XML 资源。每个都有不同的名称,例如“bicycle.xml”和“car.xml”。我想知道是否有办法在运行时根据条件加载资源。

举个例子... 假设我的应用中有文本输入。当用户输入“自行车”时,我的应用程序可以通过该名称查找 XML 资源,解析并加载它。而如果他们输入“汽车”,他们最终会得到来自其他 XML 文件的数据。

到目前为止,我注意到要加载资源,您必须使用自动生成的“R”类,这限制了您在编译时对资源进行硬编码。

【问题讨论】:

    标签: java xml android resources runtime


    【解决方案1】:

    到目前为止,我已经注意到要加载 资源,你必须使用 自动生成的“R”类,其中 限制您对资源进行硬编码 在编译时。

    您可以使用Resources#getIdentifier() 在运行时按资源名称和类型查找资源的 ID。这对 R 类使用反射,因此相对昂贵。要么不要做太多,要么缓存结果。

    【讨论】:

    • 我肯定会缓存我检索到的内容,并且调用只会在“加载”阶段完成,而不是在正常操作期间完成。您是否可以建议在运行时有效加载这样的替代方案?
    • 恐怕我不明白你的问题。 getIdentifier() 不会花费几秒钟,但它不是你想要调用的那种东西,比如说,对于列表中可能被用户抛出(抛出?)的每一行。
    猜你喜欢
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2010-11-11
    • 2019-12-16
    • 1970-01-01
    • 2017-02-02
    相关资源
    最近更新 更多