使用不同语言的图标名称调用以下函数。
更多说明:[[
假设我搜索“Coffee”然后它会返回index = 3,因为我的语言是ENGLISH。
现在我下次搜索“Kaffee”然后它将找不到像“Kaffee”这样的字符串,因为我当前的语言是ENGLISH,它使用的是values / strings.xml文件。
但是我需要返回索引为3。]]
需要结果:我希望每次都能获得返回索引= 3,无论我现在的语言是什么。
我的想法:我必须在所有这三种语言中搜索iconName,而不仅仅是从当前选择的ENGLISH语言中搜索。
问题:那么,是否可以使用所有支持的语言字符串进行搜索并获得正确的索引?
请给出一些指导!
getIndexOfIcon( “咖啡”); - >返回index = 3
getIndexOfIcon( “KAFFEE”); - >返回index = 0
getIndexOfIcon( “咖啡馆”); - >返回index = 0
public static int getIndexOfIcon(String iconName) {
String[] predefined_icon_drawable_names;
predefined_icon_drawable_names = mContext.getResources().getStringArray(R.array.predefined_icon_drawable_names_array);
int indextOfIcon = 0;
try
{
indextOfIcon = Arrays.asList(predefined_icon_drawable_names).indexOf(iconName);
if(indextOfIcon<0)
indextOfIcon = 0;
}
catch (Exception e)
{
indextOfIcon = 0;
e.printStackTrace();
}
return indextOfIcon;
}
ENGLISH Language:/values/strings.xml
<string-array name="predefined_icon_drawable_names_array">
<item>Default</item>
<item>Bath</item>
<item>Brush Teeth</item>
<item>Coffee</item>
</string-array>
GERMAN Language:/values-de/strings.xml
<string-array name="predefined_icon_drawable_names_array">
<item>Standard</item>
<item>Bad</item>
<item>Pinselzähne</item>
<item>Kaffee</item>
</string-array>
SPANISH Language:/values-es/strings.xml
<string-array name="predefined_icon_drawable_names_array">
<item>Por defecto</item>
<item>Baño</item>
<item>Cepillar dientes</item>
<item>Café</item>
</string-array>
答案 0 :(得分:1)
试试这种方式,希望这可以帮助您解决问题...
注意:请勿在此代码后忘记设置当前语言。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("English Index : "+getIndexOfIcon(this,"en","Coffee"));
System.out.println("GERMAN Index : "+getIndexOfIcon(this,"de","Kaffee"));
System.out.println("SPANISH Index : "+getIndexOfIcon(this,"es","Café"));
}
public static int getIndexOfIcon(Context mContext,String languageCode,String iconName)
{
Locale locale;
if(languageCode.equals("de")){
locale = new Locale(languageCode,"DE");
}else if(languageCode.equals("es")){
locale = new Locale(languageCode,"ES");
}else{
locale = new Locale(languageCode,"EN");
}
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
mContext.getResources().updateConfiguration(config,mContext.getResources().getDisplayMetrics());
String[] predefined_icon_drawable_names;
predefined_icon_drawable_names = mContext.getResources().getStringArray(R.array.predefined_icon_drawable_names_array);
int indextOfIcon = 0;
try
{
indextOfIcon = Arrays.asList(predefined_icon_drawable_names).indexOf(iconName);
if(indextOfIcon<0)
indextOfIcon = 0;
}
catch (Exception e)
{
indextOfIcon = 0;
e.printStackTrace();
}
return indextOfIcon;
}
答案 1 :(得分:0)
我不太确定你想要达到什么目标,但我遇到了类似的问题并用这段代码解决了这个问题:
String localized = context.getResources().getString(context.getResources().getIdentifier(mCursor.getString(COLUMN_NAME), "string", context.getPackageName()));
COLUMN_NAME来自查询,我只是使用相同的名称来识别我的字符串。您可以使用它来获得所需的信息。