Java 管理两个资源名称-一种只使用一个名称的方式-Android

Java 管理两个资源名称-一种只使用一个名称的方式-Android,java,android,android-resources,Java,Android,Android Resources,我的类中有一个常量,用于保存值的键: public static final String CAR_NAME = "car_name"; public static final String CAR_NUMBER = "car_number"; values.xml <string name="car_name">Tl5t</string> <string name="car_name_tr">Tl5tTR</string> <s

我的类中有一个常量,用于保存值的键:

 public static final String CAR_NAME = "car_name";
 public static final String CAR_NUMBER = "car_number";
values.xml

 <string name="car_name">Tl5t</string>
 <string name="car_name_tr">Tl5tTR</string>
 <string name="car_number">45334234</string>
我使用的方法如下:

int resourceId = returnResourceId(CAR_NAME);
问题是我需要管理两次资源名,一次在类const中,一次在
values.xml
文件中


我是否可以继续使用我的逻辑,但只使用一个键?

我建议您不要这样做,因为这将比直接访问慢得多。也就是说,您可以通过查找资源的名称、添加后缀,然后查找带有_tr后缀的额外字符串的资源ID来实现这一点

例如:

@StringRes
public int getResourceId(@StringRes int baseResourceId) {
    // Assume baseResourceId == R.string.car_name
    if (state == 1) {
        final Resources res = getResources();
        // Will return "car_name"
        final String resourceName = res.getResourceEntryName(baseResourceId);

        // Look up and return the integer ID for "car_name_tr"
        return res.getIdentifier(resourceName + "_tr", "string", BuildConfig.APPLICATION_ID);
    } else {
        // Otherwise just return the input
        return baseResourceId;
    }
}

我不明白你在问什么。您能说明您希望如何访问这些值而不是现在必须执行的操作吗?例如,如果我想更改
values.xml
car\u name
的键。我需要在那里更改它,还需要const
CAR\u NAME=“CAR\u NAME”
我正在寻找一种方法,以便只在一个地方进行更改。您需要使用资源来存储这些值吗?
@StringRes
public int getResourceId(@StringRes int baseResourceId) {
    // Assume baseResourceId == R.string.car_name
    if (state == 1) {
        final Resources res = getResources();
        // Will return "car_name"
        final String resourceName = res.getResourceEntryName(baseResourceId);

        // Look up and return the integer ID for "car_name_tr"
        return res.getIdentifier(resourceName + "_tr", "string", BuildConfig.APPLICATION_ID);
    } else {
        // Otherwise just return the input
        return baseResourceId;
    }
}