android – 以编程方式更改R.string的值?

android – 以编程方式更改R.string的值?,第1张

概述我正在寻找一种动态更改字符串资源值的方法.我试图使用反射,但它声称“字段的值无效”. 我在布局中使用字符串作为值,但需要将它们换成不同的语言. 请参阅下面的附件代码. public class Lang{ public static void langInit(){ java.lang.reflect.Field[] langStringFields = R.string. 我正在寻找一种动态更改字符串资源值的方法.我试图使用反射,但它声称“字段的值无效”.

我在布局中使用字符串作为值,但需要将它们换成不同的语言.

请参阅下面的附件代码.

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的值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1121779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存