在android开发中,关于string和string.xml的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在android开发中,关于string和string.xml的问题相关的知识,希望对你有一定的参考价值。

为什么layout布局文件中是 android:text="@string/button1",即引用string中的button1,而res->values文件夹下的是strings.xml,而不是string.xml ?

values文件下下面放了很多xml,比如建立一个4.0的project,就会有strings.xml、dimens.xml、styles.xml。而且自己也可以添加,比如以后学Spinner组件等可以可能会用到自己做的xml文件。

android:text="@string/button1“的”string“不是直接的文件夹名字,是ADT下管理的一个键值映射,提供的”@string“找到这个string键然后这个键对应的值是”strings.xml“这个文件。一种映射关系,而不是直接的对应,就和数据库开发中的三层模式似的(当然比喻不大妥当)。

包括引用style也不是@styles而是@style,ADT通过用户提供的键”style“找到对应的值即”style.xml“文件。再举个例子,比如你要为ImageView添加一个图片,会在布局文件中写这么一句
android:src="@drawable/pic"但是你看看有没有”drawable“这个文件夹的?没有,而是”drawable-hdpi“等一系列文件夹。具体内部是ADT自己通过映射找到的。
参考技术A 安卓会遍历values文件夹下的所有resources下的strings
也就是说即使你的文件名不叫strings.xml,或者有多个xxxstring.xml文件也是能够读出的
而@string/button1表示button1的id,是根据button1的id读取string
<string name="button1">确定</string>这样就能生成一个button1的id

关于java的String的equals()

    一直以为String的equals()是百分百准确能判断字符串是否相等的,直到今天遇到的情况:
    String value = 从properties文件取得的值。
    idea的debug看value="server"
    然后if("client".equals(value)){
            sout("hello");
    }
    竟然真的判断client跟server两字符串相等。。。。
    闹了半天,
    String tempValue = String.valueOf(value);
    再使用tempValue去判断。。。。
    不知道原因,做个记录。

以上是关于在android开发中,关于string和string.xml的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于java中String.getBytes()问题

Android 中String.format()的用法

有用的Android系统资源

麻烦请问一下,android如何修改xml文件中节点的值,并保存进去,谢谢

从 Java Android 代码访问 string.xml 资源文件

如何从 .vcf 文件恢复 android 中的联系人?