You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何获取values.xml的字符串数量并随机取值?

解决Android中随机获取values里字符串的问题

嘿,这个需求我之前做项目的时候刚好遇到过!Android确实没有直接的values.xml.size()方法,但有两种简便的方式可以实现你想要的效果,推荐第一种,省心又高效:

方法一:使用string-array(最推荐)

这是Android官方推荐的批量管理字符串的方式,完美适配你的需求:

  1. 修改values.xml,把字符串放进string-array
    把你原来分散的<string>标签改成一个<string-array>,比如:

    <!-- values/values.xml -->
    <resources>
        <string-array name="random_strings">
            <item>第一个随机字符串</item>
            <item>第二个随机字符串</item>
            <item>第三个随机字符串</item>
            <!-- 继续添加更多字符串 -->
        </string-array>
    </resources>
    
  2. 在Java代码中随机获取
    先拿到字符串数组,再通过数组长度生成随机索引,最后取出对应字符串:

    // 获取字符串数组
    String[] randomStrings = getResources().getStringArray(R.array.random_strings);
    // 生成0到数组长度-1之间的随机索引
    int randomIndex = ThreadLocalRandom.current().nextInt(randomStrings.length);
    // 获取随机字符串
    String randomString = randomStrings[randomIndex];
    

    用ThreadLocalRandom比直接new Random()更安全,尤其在多线程场景下;如果是在主线程,两种都能用,但前者是更优选择。

方法二:手动维护资源ID数组(适合已存在分散字符串的情况)

如果你不想修改现有的单个<string>标签,可以手动把每个字符串的资源ID放进一个int数组,然后通过数组长度来做随机:

  1. 在Java中定义资源ID数组

    int[] stringIds = {
        R.string.string1,
        R.string.string2,
        R.string.string3,
        // 新增字符串时要手动添加对应的R.string.xxx
    };
    
  2. 随机获取字符串

    int randomIndex = ThreadLocalRandom.current().nextInt(stringIds.length);
    String randomString = getResources().getString(stringIds[randomIndex]);
    

    这种方法的缺点是每次新增字符串都要手动更新数组,容易遗漏,所以更推荐第一种方法。

总结一下,方法一的string-array是最简便且易维护的方案,完全满足你获取字符串数量并随机取值的需求~

内容的提问来源于stack exchange,提问作者Ola Kveli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:30:20