我在布局中使用字符串作为值,但需要将它们换成不同的语言.
请参阅下面的附件代码.
public class Lang{ public static voID langInit(){ java.lang.reflect.FIEld[] langStringFIElds = R.string.class.getFIElds(); Log.d(Global.TAG,"--> Lang Listing: " + langStringFIElds.length); Log.d(Global.TAG,"--> Pref for language:"); String prefInLang = Prefs.cPrefsGet.getString("in_lang","en"); String fIEldname = null; String fIEldValue = null; String newFIEldname = null; String tmpA = "one"; for (int i=0; i<langStringFIElds.length; i++){ java.lang.reflect.FIEld fIEld = langStringFIElds[i]; fIEldname = fIEld.getname(); try { fIEldValue = Global.gActivity.getString(fIEld.getInt(R.string.class)); } catch (Exception e) { e.printstacktrace(); } if (fIEldname.substring(0,2).equals("lo")){ try { newFIEldname = R.string.class.getFIEld(prefInLang + "_" + fIEldname.substring(3)).getname(); } catch (Exception e) { e.printstacktrace(); } Log.d(Global.TAG,"--> FIEld: " + fIEldname + "value: " + fIEldValue + "new fIEld:" + newFIEldname); try { java.lang.reflect.FIEld fIEld2 = Class.forname(R.string.class.getname()).getDeclaredFIEld(newFIEldname); fIEld2.setAccessible(true); fIEld2.set(R.string.class,tmpA.toString()); }catch (Exception e) { e.printstacktrace(); } } } }}解决方法 如果您想为您的应用更改当前语言,可以使用标准的内置本地化功能和 changing locale programatically来实现. 总结
以上是内存溢出为你收集整理的android – 以编程方式更改R.string的值?全部内容,希望文章能够帮你解决android – 以编程方式更改R.string的值?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)