Gen*_*ari 1 string resources parsing android localization
我使用Resources.getIdentifier动态加载字符串资源; 因为我动态传递了一个需要从我的资源文件中翻译的字符串.当资源不存在时返回0; 所以我处理了 但是,当我传入一个数字字符串时; 即使我没有在我的资源中定义,它返回我传入的数字而不是0.当我尝试获取该资源时,这会导致崩溃.
int identifier = context.getResources().getIdentifier(myText, "string", "com.farragut.android.emsspeak");
if (identifier > 0) {
text2.setVisibility(View.VISIBLE);
text2.setText(context.getResources().getString(identifier));
} else {
text2.setVisibility(View.GONE);
}
Run Code Online (Sandbox Code Playgroud)
这个定义的行为?我无法想象为什么当myText是"BLAH"时它能正常工作,但是当myText为"12"时它就不同了.我唯一能想到的是测试myText是否是数字的; 虽然我能找到的唯一方法是尝试将其解析为整数并捕获numberFormatException.这是最好的解决方案吗?
好吧这有点奇怪,但如果我指定完全限定的名称,就像它在getIdentifier()文档中提到的那样它可以正常工作,否则我得到的结果和你一样.
尝试一下 getIdentifier("com.farragut.android.emsspeak:string/"+myText, null, null);