【问题标题】:How to specify null value for a string resource in xml in Android?如何在Android中为xml中的字符串资源指定空值?
【发布时间】:2016-04-11 06:17:22
【问题描述】:

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

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

values.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 值?

【问题讨论】:

  • 但是为什么呢?------
  • @RandykaYudhistira 为了科学! (研究目的!)=)
  • @PolyBug 非常有趣的问题:) 抱歉,虽然我对此没有任何答案:|我也期待解决方案:)
  • 你可以使用@IntelliJAmiya 的想法。或者您可以将资源设置为 %s 然后 String.format(your_resource,null);
  • @IntelliJAmiya 不幸的是,没有可用的解决方案。从技术上讲,xml 没有 @null 的值。

标签: java android xml


【解决方案1】:

如您所知,资源的存在是因为它们应该是"something NOT null",而@null 只是一个具有零值 id 的参考资源 .

xml中是否可以有空值?

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

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

<string name="empty"/>

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

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

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

【讨论】:

    【解决方案2】:

    你可以试试matches

    测试这个字符串是否匹配给定的正则表达式。这个 只有当正则表达式匹配整个 输入字符串。

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

    如果您需要使用 String.format(String, 对象...),那么您可以通过将格式参数放在 字符串资源。

    礼貌dynamic String using String.xml?

    【讨论】:

    • 我认为这是一种解决方法。我必须记住一个特定的字符串资源是否可以具有空值,从逻辑上讲,这将是一件麻烦事。我希望有一种通过 xml 分配空值的直接方法。
    • @PolyBug 确实如此。你有其他解决方案吗?
    • 目前还没有。在 android 中没有定义空值的任何常量 R 定义。
    【解决方案3】:

    您可以为此使用方法。

     public static boolean isNullString(String string) {
        try {
            if (string.trim().equalsIgnoreCase("null") || string.trim() == null || string.trim().length() < 0 || string.trim().equals("")) {
                return true;
            } else {
                return false;
            }
        } catch (Exception e) {
            return true;
        }
    }
    

    将此方法用作

    if(isNullStrind(your string value){
    //true
    write your code
    }else{
    //false
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      相关资源
      最近更新 更多