从其他值获取字符串的ID

时间:2016-12-31 19:06:25

标签: android

我知道标题令人困惑, 但是当我尝试从strings.xml

获取现有字符串的id键时,我遇到了一个持久的问题 像这样 我有三个值文件夹: values,values-fr,values-ar;

我有一个字符串ID:

R.id.center

在屏幕上打印时,此ID显示: 在值

"Center"

in values-fr

"Centre"

in values-ar

"وسط"

我的问题是: 有没有办法通过传递“中心”或“中心”或“وسط”作为参数来检索int id

喜欢“وسط”.getId或(“中心”).getId 我知道这些方法不存在:)``

1 个答案:

答案 0 :(得分:1)

编辑:经过测试和工作。现在包括语言环境支持。

public void listValues() {
    Field[] fields = R.string.class.getFields();

    String[] locales = Resources.getSystem().getAssets().getLocales();


    for (int x = 0; x < locales.length; x++) {
        System.out.println("checking for all ressources for the locale=" + locales[x]);
        for (int i = 0; i < fields.length; i++) {
            try {
                System.out.println("name=" + fields[i].getName() + " value=" + getLocalizedResources(this, new Locale(locales[x])).getString(fields[i].getInt(fields[i].getName())));
            } catch (IllegalAccessException ex) {
                System.out.println(".. catch it if you want it");
            } catch (RuntimeException rex) {
            }
        }
    }
}

@NonNull
Resources getLocalizedResources(Context context, Locale desiredLocale) {
    Configuration conf = context.getResources().getConfiguration();
    conf = new Configuration(conf);
    conf.setLocale(desiredLocale);
    Context localizedContext = context.createConfigurationContext(conf);
    return localizedContext.getResources();
}