2012-07-30 90 views
1

我想以编程方式更改我的应用程序中的语言。 第一个onCreate(Bundle)方法起作用,图像以中文显示。 第二个不起作用。我需要在“TODO”评论中插入什么内容?我想在创建视图后更改语言并想更新它。在Android应用程序中更改语言

@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(); 
} 

回答

0

第一个示例有效,因为它叫setContentView方法之前改变语言环境。您需要在setContentView之前插入changeLanguage。 所有视图已在setContentView之后膨胀,因此此时更改区域设置将不起作用。如果您想在创建视图后更改语言,则需要手动更新它。

+0

是的,我知道。但是我可以如何手动更新它们? – 2012-07-30 11:11:27

+0

如果您在'Resources'类中更改语言环境,那么'Context.getString'应该在新的语言环境中返回文本,在您的情况下为中文。所以你需要为所有的'TextView'实体手动设置文本。没有重新创建视图层次结构,无法立即执行此操作。顺便说一句,为什么你不能在调用'setContentView'之前改变你的locale?这绝对会更简单。 – 2012-07-30 11:24:17

+0

我不能这样做,因为当用户按下后退按钮时,不会重新创建视图,并且会显示旧语言。 – 2012-07-30 11:28:01

相关问题