如何在Android中的xml中为字符串资源指定空值?

2022-09-03 08:12:20

在我的值.xml,我有一些字符串资源。但有时,出于特定原因,我希望该字符串资源具有空值。

如何指定该字符串具有值?null

值.xml:

<string name="default_item_0">Some String</string>
<string name="default_item_1">@null</string>

Java 代码:

String item0 = context.getString(R.string.default_item_0);
String item1 = context.getString(R.string.default_item_1);

预期:

String item0 = "Some String";
String item1 = null;

实际:

String item0 = "Some String";
String item1 = "@0";

我尝试了@null值,但它返回一个字符串。@0

是否可以在 xml 中具有值?null


答案 1

如您所知,资源之所以存在,是因为它们应该是“非空值”,并且只是具有零值 ID 的引用资源@null

是否可以在 xml 中具有空值?

字符串资源的空值?不,老实说,这似乎不合理

但是在这种情况下,出于您的具体原因,我建议您向资源添加一个空字符串:

<string name="empty"/>

然后,您可以检查它是否为空:

String str = getString(R.string.empty);
    if (TextUtils.isEmpty(str)) {
        //do something
    }

附言:早些时候,我使用这种方法将索引映射到数组的正确项,正如您在我的情况下所猜测的那样,跳过了一些索引,因此我也必须跳过一些数组项。


答案 2

您可以尝试使用matches

测试此字符串是否与给定的正则表达式匹配。仅当正则表达式与整个输入字符串匹配时,此方法才返回 true。

if(getResources().getString(R.string.default_item_1).matches("@null")) 
{ 
     // Your logic
}
else
    {
     // Your logic
    }

如果需要使用 String.format(String, Object...) 设置字符串的格式,则可以通过将 format 参数放在字符串资源中来执行此操作。

使用字符串的礼貌动态字符串.xml?


推荐