2010-09-30 84 views
5

我的应用程序中有一项设置,允许用户选择不同的本地化(语言),即Chinese, German, etcandroid:在运行中反映UI语言更改,无需重新加载/重新启动应用程序

我想要做的是,一旦用户做出选择,立即用当前所选语言的字符串更新布局。当然,我希望lang更改传播到所有当前活动,无需重新加载应用程序。

我发现这(尚未尝试过),但想知道是否有一个更干净的方式来做到这一点。

http://www.tutorialforandroid.com/2009/01/force-localize-application-on-android.html

格拉西亚斯

+0

你好,你找到最佳做法吗? thx – 2012-06-30 09:23:16

回答

2

我也有过这样issue.I使用下面的代码,然后它改变了语言,而不用刷新活动

public void setLocale(String lang) { 

    myLocale = new Locale(lang); 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    conf.locale = myLocale; 
    res.updateConfiguration(conf, dm); 
    onConfigurationChanged(conf); 
    /*Intent refresh = new Intent(this, AndroidLocalize.class); 
    startActivity(refresh);*/ 
} 
@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    // refresh your views here 
    lblLang.setText(R.string.langselection); 
    super.onConfigurationChanged(newConfig); 
} 

我希望它会帮助你.. .....

+1

已从以下链接的投票数最多的答复复印。即使是评论的代码。 http://stackoverflow.com/questions/12908289/how-change-language-of-app-on-user-select-language – 2015-06-24 00:48:32

0

您应该执行一些步骤

首先,您需要更改配置的区域

Resources resources = context.getResources(); 

    Configuration configuration = resources.getConfiguration(); 
    configuration.locale = new Locale(language); 

    resources.updateConfiguration(configuration, resources.getDisplayMetrics()); 

其次,如果你希望你的变化,直接适用于可见的布局,你要么可以直接更新的意见,也可以直接拨打活动.recreate()重新启动当前活动。

而且你必须坚持你的改变,因为在用户关闭你的应用程序后,你将失去语言的改变。

我在我的博客文章解释更详细的解决方案Change Language Programmatically in Android

基本上,你只需要调用LocaleHelper.onCreate()在你的应用程序类,如果你想改变,你可以调用LocaleHelper.setLocale飞区域()

相关问题