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

Managing twice a resource name - a way to work with only one name - Android

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

 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>

以及 return 正确资源 ID 的方法:

public void returnResourceId (String resource) {
    if (state == 1){
        resource = resource+"_tr";
    }
    return Resources.getSystem().getIdentifier(resource, "string",getPackageName() );
}

我正在使用这样的方法:

int resourceId = returnResourceId(CAR_NAME);

问题是我需要管理两次资源名称,一次在 class 常量中,一次在 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;
    }
}