安卓:更改语言编程 [英] Android: Change language programmatically

查看:263
本文介绍了安卓:更改语言编程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有3个按钮来改变语言。所以,我需要做的方法,在那里我可以设置监听器功能的按钮,可以改变语言每次他们是pressed。 我想这 http://stackoverflow.com/a/2900144/1088229 但这种方式改变区域只有一次,似乎这不工作了(如果我再次点击,它甚至不响应)。所以我加了 changeLanguageListener()在听者的结束,让听众被刷新。

那么,这行,我怎么解决它,或有另一种方式?

 私人无效changeLanguageListener(){
    最终按钮丁烯=(按钮)findViewById(R.id.button_language_en);
    最终按钮butLt =(按钮)findViewById(R.id.button_language_lt);
    最终按钮butRu =(按钮)findViewById(R.id.button_language_ru);
    OnClickListener监听器=新OnClickListener(){

        公共无效的onClick(视图v){
            按钮,但是=(巴顿)V;
            资源RES = getResources();
            。串电流= res.getConfiguration()locale.getCountry();
            Log.i(当前,电流);
            字符串localeString =新的String(电流);
            如果(but.equals(丁烯)){
                localeString =EN;
            }否则,如果(but.equals(butLt)){
                localeString =LT;
            }否则,如果(but.equals(butRu)){
                localeString =RU;
            }
            Log.i(点击,localeString);

            如果(current.equalsIgnoreCase(localeString)及!&安培; localeString.length()大于0){
                //在应用程序更改区域设置。
                DisplayMetrics DM = res.getDisplayMetrics();
                android.content.res.Configuration CONF = res.getConfiguration();
                conf.locale =新的语言环境(localeString.toLowerCase());
                res.updateConfiguration(CONF,DM);
                //刷新菜单
                setGridView();
                //添加此行得到刷新监听器
                changeLanguageListener();
            }
        }
    };
    butEn.setOnClickListener(听众);
    butLt.setOnClickListener(听众);
    butRu.setOnClickListener(听众);
}
 

解决方案

因此​​,只有两个活动(两种菜单模式),在那里我让改变语言环境,因为,我刚刚重新启动的活动区域设置更改后的权利,所以一切都将被刷新。没有找到任何其他更好的解决方案。

I have 3 buttons to change language. So I need to make method, where I could set listeners to buttons which could change language everytime they are pressed. I tried this http://stackoverflow.com/a/2900144/1088229 but this way it changes locale only once and seems that this doesn't work any more (if i click again, it doesn't even respond). So I added changeLanguageListener() in end of listener, so listener is refreshed.

So is it ok, how i solved it or there is another way?

private void changeLanguageListener() {
    final Button butEn = (Button) findViewById(R.id.button_language_en);
    final Button butLt = (Button) findViewById(R.id.button_language_lt);
    final Button butRu = (Button) findViewById(R.id.button_language_ru);
    OnClickListener listener = new OnClickListener() {

        public void onClick(View v) {
            Button but = (Button) v;
            Resources res = getResources();
            String current = res.getConfiguration().locale.getCountry();
            Log.i("Current", current);
            String localeString = new String(current);
            if (but.equals(butEn)) {
                localeString = "en";
            } else if (but.equals(butLt)) {
                localeString = "lt";
            } else if (but.equals(butRu)) {
                localeString = "ru";
            }
            Log.i("Clicked", localeString);

            if (!current.equalsIgnoreCase(localeString) && localeString.length() > 0) {
                // Change locale settings in the app.
                DisplayMetrics dm = res.getDisplayMetrics();
                android.content.res.Configuration conf = res.getConfiguration();
                conf.locale = new Locale(localeString.toLowerCase());
                res.updateConfiguration(conf, dm);  
                //refresh menu
                setGridView();
                //added this line to get refreshed listener
                changeLanguageListener();
            }               
        }
    };
    butEn.setOnClickListener(listener);
    butLt.setOnClickListener(listener);
    butRu.setOnClickListener(listener);
}

解决方案

So, because of only two activities (two menu modes) where i let to change locale, I just restart Activity right after locale change, so everything is refreshed. Didn't find any other better solution

这篇关于安卓:更改语言编程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆