繁体   English   中英

如何读取strings.xml作为文件?

[英]how to read strings.xml as a file?

我试图访问strings.XML但我无法找到它的路径。 我需要在Values文件夹中读取strings.XML作为文件并访问that.how的内容我可以访问该文件及其路径是什么?

编辑

我之前用过这个:

 Field[] fields = R.string.class.getDeclaredFields(); // or Field[] fields = R.string.class.getFields();
    String str = "";
    for (int  i =0; i < fields.length; i++) {
        int resId = ctx.getResources().getIdentifier(fields[i].getName(), "string", ctx.getPackageName());
        str += fields[i].getName() + " = ";
        if (resId != 0) {
            str += ctx.getResources().getString(resId);
        }
        str += "\n";
    }

但是返回所有库的所有字符串,但我只需要在我的模块的strings.xml中使用字符串。

我写Gradle代码,我想要一些像这样的东西,但在java中:

 def stringsFile = file("src/main/res/values/strings.xml")
def parsedProjectXml = (new XmlParser()).parse(stringsFile)

我试图访问strings.xml但我无法找到它的路径。

没有路径,因为它不是设备上的文件。

我该如何访问该文件

你不能。 可能可以通过 Resources对象上的 getXml()获取解析器,但我还没有尝试过将其用于字符串资源文件。

它的道路是什么?

它没有。

你无法从路径中读取它。 您可以按如下方式定义字符串数组:

在XML中

   <string-array name="arrayName">
    <item>@string/String1</item>
    <item>@string/String2</item>
    <item>@string/String3</item>
    <item>@string/String4</item>
    <item>@string/String5</item>

</string-array>

在java中:

您可以按如下方式检索数据:

       String[] stringsArray= getResources().getStringArray(R.array.arrayName);

        for (int i = 0; i < stringsArray.length; i++)
        {

        }   

您不能将strings.xml作为.xml文件访问,只需读取它即可。 构建android应用程序后,资源文件中的值在R.java文件中得到引用。 所以你必须使用android内部API访问它。 下面是一个示例R.java文件。

public final class R {  
    public static final class attr {  
    }  
    public static final class drawable {  
        public static final int ic_launcher=0x7f020000;  
    }  
    public static final class id {  
        public static final int menu_settings=0x7f070000;  
    }  
    public static final class layout {  
        public static final int activity_main=0x7f030000;  
    }  
    public static final class menu {  
        public static final int activity_main=0x7f060000;  
    }  
    public static final class string {  
        public static final int app_name=0x7f040000;  
        public static final int hello_world=0x7f040001;  
        public static final int menu_settings=0x7f040002;  
    }  
    public static final class style {  

        public static final int AppBaseTheme=0x7f050000;  



        public static final int AppTheme=0x7f050001;  
    }  
}

最后,我找到了使用Gradle函数的解决方案,并且正确的构建时刻将strings.XML的副本复制到原始文件夹中,之后解析该文件。

暂无
暂无

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

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