相关疑难解决方法(0)

使用String.xml的动态字符串?

是否可以在字符串值中包含占位符string.xml,可以在运行时分配值?

例:

一些字符串PLACEHOLDER1更多字符串

string android string-formatting android-resources

442
推荐指数
6
解决办法
23万
查看次数

从strings.xml中的另一个字符串引用一个字符串?

我想在strings.xml文件中引用另一个字符串中的字符串,如下所示(特别注意"message_text"字符串内容的结尾):

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="button_text">Add item</string>
    <string name="message_text">You don't have any items yet! Add one by pressing the \'@string/button_text\' button.</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了上面的语法,然后文本打印出"@ string/button_text"作为明文.不是我想要的.我想要打印消息文本"你还没有任何项目!按"添加项目"按钮添加一个项目."

有没有任何已知的方法来实现我想要的?

RATIONALE:
我的应用程序有一个项目列表,但是当该列表为空时,我会显示"@android:id/empty"TextView.TextView中的文本是通知用户如何添加新项目.我想让我的布局变得傻瓜变化(是的,我是个傻瓜:-)

xml string android

215
推荐指数
6
解决办法
8万
查看次数

如何在android XML中连接多个字符串?

问题
我希望能够在Android XML代码中执行类似的操作:

<string name="title">@string/app_name test</string>
<string name="title2">@string/app_name @string/version_name</string>
Run Code Online (Sandbox Code Playgroud)

关于第一行代码编译器显示此错误

找不到与给定名称匹配的资源(在'title'处,值为'@ string/app_name test')

关于第二行代码编译器显示此错误

找不到与给定名称匹配的资源(在'title2'处,值为'@ string/app_name @ string/version_name')

问题
有人知道如何在Android XML中连接多个字符串吗?

基本原理
在许多代码位(在本例中为XML)中复制变量值是不好的做法.

android android-xml

71
推荐指数
1
解决办法
5万
查看次数

尝试在ANDROID资源中使用<!ENTITY并出现错误:"实体已被引用,但未被声明."

我正在按照此解决方案在我的字符串资源文件中使用enetities:

是否可以直接在Android资源XML文件中进行字符串替换?

我在资源树中使用外部文件:/res/raw/entities.dtd,其内容:

<!ENTITY ent_devicename "MyDeviceName">
Run Code Online (Sandbox Code Playgroud)

string.xml资源文件中:

<!DOCTYPE resources [
    <!ENTITY % ent_devicename SYSTEM "../raw/entities.dtd">
    %ent_devicename;
]>

<resources>
    <string name="name">The name is &ent_devicename;</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

实体"ent_devicename"已被引用,但未被声明.

如您所见,Android Studio可识别外部实体文件:

在此输入图像描述

和实体:

在此输入图像描述

有人能提供一个正确的例子来使事情有效吗?我的意思是一个完全可编译的Android Studio项目,在单独的文件中包含实体声明.

更新 好的,如果你更加关注这个w3schools链接:

https://www.w3schools.com/xml/xml_dtd_entities.asp

你看到了解决方案:

外部entities.dtd文件包含

<!ENTITY ent_devicename "MyDeviceName">
Run Code Online (Sandbox Code Playgroud)

那么新的字符串资源资源:

<?xml version="1.0" encoding="utf-8"?>

    <!DOCTYPE resources [
        <!ENTITY ent_devicename SYSTEM "../raw/entities.dtd">
        ]>

<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="Typos">
    <string name="ent_devicenamxxe2">&ent_devicename;</string>
Run Code Online (Sandbox Code Playgroud)

我改变了<!ENTITY % ent_devicename<!ENTITY ent_devicename(不再%)我删除%ent_devicename;

现在它编译但是生成的APK似乎忽略了实体值(使用空字符串).所以问题没有解决!

让我知道!

xml dtd android-resources android-studio android-gradle-plugin

20
推荐指数
1
解决办法
1780
查看次数

如何将静态字符串与XML字符串资源连接起来?

我正在尝试将静态"硬编码"字符串与strings.xml字符串数组项引用的字符串组合在一起.

目标是拥有一个动态指标列表,其中所有语言的数字都相同,但指标文本值可能会按语言更改,如下所示:

<string-array name="interval_labels">
    <item>30 @string/second</item>
    <item>1 @string/minute</item>
    <item>5 @string/minute</item>
    <item>10 @string/minute</item>
    <item>15 @string/minute</item>
    <item>30 @string/minute</item>
    <item>60 @string/minute</item>
</string-array>
Run Code Online (Sandbox Code Playgroud)

现在,如果我在之前删除的数字@string/...引用,它工作得很好(如提到这里),但我不知道是否有检索引用的字符串,并将其拼接到"硬编码"的一个办法.

xml arrays android reference preferences

9
推荐指数
1
解决办法
4417
查看次数