在Android应用程序中更改语言

在Android应用程序中更改语言,android,locale,Android,Locale,我想通过编程更改应用程序中的语言。 第一个onCreate(Bundle)方法起作用,图像以中文显示。 第二个不起作用。我必须在“待办事项”注释中插入什么?我想在创建视图后更改语言并更新它 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TranslationHelper.changeLanguage(this, Locale.CHINE

我想通过编程更改应用程序中的语言。 第一个onCreate(Bundle)方法起作用,图像以中文显示。 第二个不起作用。我必须在“待办事项”注释中插入什么?我想在创建视图后更改语言并更新它

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TranslationHelper.changeLanguage(this, Locale.CHINESE);
    setContentView(R.layout.main_activity);
    doBindService();
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
    TranslationHelper.changeLanguage(this, Locale.CHINESE);
    // TODO recreate view to display chinese version
    doBindService();
}

第一个示例之所以有效,是因为它在调用
setContentView
方法之前更改了区域设置。您需要在
setContentView
之前插入
changeLanguage

setContentView
之后,所有视图都已膨胀,因此此时更改区域设置将无效。如果要在创建视图后更改语言,则需要手动更新它。

如果要在
Resources
class中更改区域设置,则
Context。getString
应在之后以新区域设置返回文本,以中文为例。因此,您需要手动设置所有
TextView
实体的文本。如果不重新创建视图层次结构,就无法立即执行此操作。顺便问一下,为什么在调用
setContentView
之前不能更改您的语言环境?它肯定会更简单。我不能,因为当用户按下后退按钮时,视图将不会被重新创建,并且旧语言将被显示。例如,如果您想更改上一个活动中的语言,您可以在
onActivityResult
中再次调用
setContentView