代码之家  ›  专栏  ›  技术社区  ›  MrMinemeet

从字符串中选择随机文本。xml[重复]

  •  -1
  • MrMinemeet  · 技术社区  · 7 年前

    我试着使用

    String text = "text_";
    int randomNum = rand.nextInt((100 + 1) + 1;
    text = text + String.valueOf(randomNum);
    txt.setText(getString(R.string.text);
    

    所以现在它不起作用了,因为字符串文件中没有“文本”。。。

    也许有一些建议?

    2 回复  |  直到 7 年前
        1
  •  0
  •   mac229    7 年前

    public static int getResId(String resName, Class<?> c) {
        try {
            Field idField = c.getDeclaredField(resName);
            return idField.getInt(idField);
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        } 
    }
    

    就您而言:

    getResId(text, String.class);
    

    更好的选择是在xml中创建字符串数组:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="planets_array">
            <item>Mercury</item>
            <item>Venus</item>
            <item>Earth</item>
            <item>Mars</item>
        </string-array>
    </resources>
    

    String[] planets = res.getStringArray(R.array.planets_array);
    int randomNum = rand.nextInt(planets.size() - 1);
    txt.setText(planets[randomNum]);
    
        2
  •  0
  •   Francis Nduba Numbi    7 年前

    Resources.class : getIdentifier(resIdName, resTypeName, packageName)

    由于资源属于上下文,您需要:

    String text = "text_";
     int randomNum = rand.nextInt((100 + 1) + 1; 
    text = text + String.valueOf(randomNum);
    int textId = getResources().getIdentifier(text, "string", getPackageName());
    txt.setText(getString(textId));
    

    It was answered here