gpt4 book ai didi

java - (Android) 更改语言无法正常工作

转载 作者:行者123 更新时间:2023-12-01 09:47:51 24 4
gpt4 key购买 nike

我在 MainActivity.java 中选择应用程序的语言,有时它无法正常工作。

这是我在 onCreate 方法上的代码:

if(!SaveSharedPreference.getUserId(MainActivity.this).equals("")) {
if (SaveSharedPreference.getWhoLoggedIn(MainActivity.this).equals("Main_User")) {
FetchUserLanguage fetchUserLanguage = new FetchUserLanguage();
fetchUserLanguage.execute();
}
} else {
sDefSystemDefaultLanguage = Resources.getSystem().getConfiguration().locale;
Configuration configuration = new Configuration();
configuration.locale = sDefSystemDefaultLanguage;
getBaseContext().getResources().updateConfiguration(configuration, getBaseContext().getResources().getDisplayMetrics());
}

FetchUserLanguage中,我从数据库中获取每个用户的语言(它正确返回值)。

我设置区域设置的方法是下一个:

@Override
protected void onPostExecute(String result) {
switch (result) {
case "English":
locale = new Locale("en");
configuration = new Configuration();
configuration.locale = locale;
getBaseContext().getResources().updateConfiguration(configuration,
getBaseContext().getResources().getDisplayMetrics());
break;
case "Deutsch":
locale = new Locale("de");
configuration = new Configuration();
configuration.locale = locale;
getBaseContext().getResources().updateConfiguration(configuration,
getBaseContext().getResources().getDisplayMetrics());
break;
default:
locale = Resources.getSystem().getConfiguration().locale;
configuration = new Configuration();
configuration.locale = locale;
getBaseContext().getResources().updateConfiguration(configuration,
getBaseContext().getResources().getDisplayMetrics());
break;
}
}

当我从 Android Studio 运行该应用程序时,它工作得很好,并且所有应用程序都以所选语言设置,但是,如果我关闭并再次打开它,第一个屏幕将以英语显示,(另一个是在德国)。设备的语言是英语,Android项目的默认语言也是英语。

也许我错过了一些东西。

非常感谢。

最佳答案

终于找到解决办法了。

问题是我在异步线程中执行翻译过程,因此应用程序仍在运行,并且在屏幕更改之前某些布局没有更改为新语言。

解决方案是在 onPostExecute() 方法末尾创建 Intent:

@Override
protected void onPostExecute(String result) {
switch (result) {
case "English":
locale = new Locale("en");
Locale.setDefault(locale);
configuration = new Configuration();
configuration.locale = locale;
SaveSharedPreference.setUserLanguage(MainActivity.this, locale.getLanguage());
getBaseContext().getResources().updateConfiguration(configuration,
getBaseContext().getResources().getDisplayMetrics());
break;
case "Deutsch":
locale = new Locale("de");
Locale.setDefault(locale);
configuration = new Configuration();
configuration.locale = locale;
SaveSharedPreference.setUserLanguage(MainActivity.this, locale.getLanguage());
getBaseContext().getResources().updateConfiguration(configuration,
getBaseContext().getResources().getDisplayMetrics());
break;
default:
locale = Resources.getSystem().getConfiguration().locale;
Locale.setDefault(locale);
SaveSharedPreference.setUserLanguage(MainActivity.this, locale.getLanguage());
configuration = new Configuration();
configuration.locale = locale;
getBaseContext().getResources().updateConfiguration(configuration,
getBaseContext().getResources().getDisplayMetrics());
break;
}
Intent intent = new Intent(MainActivity.this, MainMenuActivity.class);
if(SaveSharedPreference.getUserType(MainActivity.this).equals("Full")) {
intent.putExtra("Type", "Full");
}
startActivity(intent);
finish();
}

关于java - (Android) 更改语言无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37837341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com