Android:res/strings.xml,包括另一个文件夹中的另一个字符串文件

标签 android xml string include adt

如何在文件系统的另一个位置包含来自另一个 xml 的其他字符串?

例如:

<xi:include href="assets/app.xml" parse="xml" />

但是上面的例子不起作用,正确的语法是什么?无法通过谷歌在其上找到任何内容。

也许你想知道为什么?好吧,说来话长,但想要自动化一些项目并在 Assets 文件夹中生成内容(并重用)。这就是它位于另一个位置的原因。我唯一需要做的就是在 ADT 中运行打印机。

是否可以包含来自其他位置的一些其他字符串?

assets文件夹中app.xml的内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Example application</string>
    <string name="app_author">Erwin</string>
    <string name="app_copyright">illumation (c) 2014</string>
    <string name="app_favicon">assets/appicon.ico</string>
    <string name="app_icon">assets/appicon.png</string>
    <string name="app_icon_large">assets/appicon-large.png</string>
    <string name="app_launch_image">assets/applaunch.png</string>
</resources>

最佳答案

不幸的是,您希望使用 R.string.string_name 访问的所有字符串资源(在 Java 中)或 @string/string_name (在 XML 中)标识符必须在 .xml 中直接位于 /res/values 中的文件您项目的目录(即,也没有子目录)。

但是,文件名是任意的,您基本上可以拥有任意数量的文件。主要要求是所有字符串资源都位于 <resources> 内。标签。只要每个资源都在该标签内,并且每个文件都在上述目录中,那么它将被编译到您的 R.java 中。 .

当然,这对您的情况没有帮助。

我还应该指出,您不能以编程方式修改您的 Assets 。如果这样做的目的是使数据对您的应用保密,那么您可能希望使用 openFileOuput() , openFileInput() , 和 getFilesDir()标准方法FileStream对象。这些都涵盖了here .

如果您有必要使用 XML 格式,那么您有几个不同的选项来解析 XML,其中一些选项已详细说明 here .我用过 XmlPullParser , 而且很容易实现。

关于Android:res/strings.xml,包括另一个文件夹中的另一个字符串文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22431191/

相关文章:

android - Onkeydown return false 和 return super.onkeydown() 有什么区别?

android - Android Studio 3.6.3在build.gradle中未显示依赖项更新

android - 如何在 fragment View 中的工具栏上使用 OptionMenu?

html - 如何在 iOS 中分隔 xml 标记内的值

java - 如何计算字符串中每个字母出现的次数?

java - 在 Java 中替换字符串忽略大小写

android - 如何在 Android 中的 FloatingActionButton 上方添加 TextView

xml - 收集用于 PerUser 安装程序的文件

c++ - 使用 TinyXML 修改文档

c# - 如何用不同的字符替换字符串中的每个数字?