在android上点击按钮更改应用程序语言

时间:2013-03-20 13:51:03

标签: android android-layout android-widget android-listview android-linearlayout

我的应用程序运行时使用两种语言,即英语和西班牙语。为此我维护两个文件夹,用于值,值和值-sp。

我点击时,我的SettingsActivity中有一个按钮,整个应用程序已更改为所选语言,因为我已编写附加代码。

我的问题是,当我点击按钮并按回按钮应用程序显示黑屏已有一段时间然后它出现。

在简历中的每个活动中,我再次呼叫onCreate以获得更新视图。即使我这样做了黑屏也出现了。

任何人都可以帮助我摆脱这个。

提前致谢。

我的代码是

english.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) 
                {
                       languagePopup.dismiss();
                       Locale locale2 = new Locale("en"); 
                       Locale.setDefault(locale2);
                       Configuration config2 = new Configuration();
                       config2.locale = locale2;
                       getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics());
                       changLanguae();
                       if(language.equalsIgnoreCase("English"))
                           Constants.isLanguageChanged=false;
                       else
                           Constants.isLanguageChanged = true;

                }
            });
            spanish.setOnClickListener(new OnClickListener() 
            {

                @Override
                public void onClick(View v)
                {
                       languagePopup.dismiss();
                       Locale locale2 = new Locale("es"); 
                       Locale.setDefault(locale2);
                       Configuration config2 = new Configuration();
                       config2.locale = locale2;
                       getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics());
                       changLanguae();
                       if(language.equalsIgnoreCase("Spanish"))
                           Constants.isLanguageChanged=false;
                       else
                           Constants.isLanguageChanged = true;

                }
            });

2 个答案:

答案 0 :(得分:1)

创建一个方法,在该方法中复制视图的值设置部分并在onResume()上使用此方法。无需在onResume()中编写整个onCreate

答案 1 :(得分:1)

为应用程序进行语言更改的一种更好的方法是让用户从设备设置更改语言和输入设置,并让设备和应用程序通过从您为该语言创建的文件夹中呈现UI来适当地处理此更改。一个例子是Android Localization