在 android studio 中获取 values.xml 的大小?

Posted

技术标签:

【中文标题】在 android studio 中获取 values.xml 的大小?【英文标题】:getting the size of values.xml in android studio? 【发布时间】:2018-07-14 15:45:50 【问题描述】:

我正在我的 android 类中执行一项任务,在我的 values 文件夹中,我创建了一个名为“values.xml”的文件,并在其中放置了一些随机字符串:

<string name="name1">John</string>
<string name="name2">Jane</string>
<string name="name3">Andre</string>

在我的 java 文件中,我想得到一个随机字符串,但我希望这是基于 values.xml 的大小

Random random = new Random();
String randomString = getResources().getString(random.nextInt(3));
textView.setText(randomString);

这会创建并获取一个随机字符串,而不是

random.nextInt(3);

我希望它获取 values.xml.size();或类似的东西。 有没有聪明的方法来做到这一点?我到处找了!

【问题讨论】:

您可以尝试使用 并且可以在运行时获取数组数据的大小 getResources().getStringArray(R.array.data_array).length; 阿伦,你有一个很好的答案。您能否将其发布为答案而不是评论,并指出为什么使用随机整数执行 getString() 没有达到 Ola 的预期? @ArunKumar,您的评论显示了非常正确的答案。应该经常投票,并被选为正确的。如果可以的话,请用一个简短的例子来回答。 现在发表评论作为答案:-) ...谢谢 【参考方案1】:

您可以使用反射来获取XML值文件中的所有字符串:

Field[] fields = R.string.class.getFields();
//fields.length would be the count of all the string in your xml file
int rand = random.nextInt(fields.length)
String randomText = getResources().getString(fields[rand].getName()));

【讨论】:

【参考方案2】:

您可以用于一组元素:

<string-array name="name_array">
        <item>John</item>
        <item>Jane</item>
        <item>Andre</item>
    </string-array>

您可以在运行时使用以下代码获取数组的大小:

int size = getResources().getStringArray(R.array.data_array).length;

【讨论】:

以上是关于在 android studio 中获取 values.xml 的大小?的主要内容,如果未能解决你的问题,请参考以下文章

android studio怎么运行apk包

Android studio 中如何批量引入图片。一大堆图片!

Android Studio Android 资源链接失败错误.. AAPT:错误:找不到资源 android:attr/lStar。在 values.xml 105

android studio 中去除应用标题栏

android studio attrs.xml在哪儿

努力在我的 Android Studio 项目中获取 Android 视图