我正在尝试添加语言控制器,这意味着更改应用的语言。
我添加了4个标记(ImageView),每当我按下我想要的标记时,我希望应用程序更改依赖于该标记的语言。
应用程序开始是英语,当我按下丹麦语时,语言会切换到丹麦语,但每当我想改回英语时,都没有任何反应。
我在自己的值文件夹
中创建了几个strings.xml文件yourtype
更改语言的方法:
value-en/strings.xml
value-dk/strings.xml
english.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config,getResources().getDisplayMetrics());
setContentView(R.layout.activity_main);
}
});
是我对ImageView的变量
答案 0 :(得分:1)
我找到了解决方案。
为了将onClickListener()
保存在我的其他组件上,我需要刷新下面发布的活动:
重新开始活动
我只是制作了如下方法:
//Restarts the activity after changing the languagse
private void RestartActivity(){
Intent intent = getIntent();
finish();
startActivity(intent);
}
每当我更改语言时,我都会运行方法:
english.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config,getResources().getDisplayMetrics());
setContentView(R.layout.activity_main);
RestartActivity(); //Run the method as the last thing
}
});
由于某种原因,听众并没有看到mto留下来,但这个解决方案适合我。
答案 1 :(得分:0)
我测试了下面的代码,它按照我的考虑工作。检查一下它会对你有所帮助。 在您的单击侦听器上调用此方法,并将区域设置字符串作为参数传递。
private void setDeviceDefaultLanguage(String languageToLoad){
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config,
getResources().getDisplayMetrics());
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}