gpt4 book ai didi

android - 在不重新启动 Activity 的情况下更改语言

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:49:08 25 4
gpt4 key购买 nike

如果用户愿意,我有一种方法可以将我的应用程序从英语翻译成瑞典语,然后再翻译成瑞典语。但是,我不太喜欢 Activity 每次都重新启动这一事实,因为这让我很难使用 savedInstaceState 并且因此我遇到了几次崩溃。

这是我改变语言的方法的样子:

public void setApplicationLanguage(String language) {
myLocale = new Locale(language);
Resources res = activity.getResources();
DisplayMetrics display = res.getDisplayMetrics();
Configuration configuration = res.getConfiguration();
configuration.locale = myLocale;
res.updateConfiguration(configuration, display);
Intent refresh = new Intent(activity, StartupActivity.class);
activity.startActivity(refresh);
}

是否有可能在没有以下条件的情况下应用相同的功能:

Intent refresh = new Intent(activity, StartupActivity.class);
activity.startActivity(refresh);

?

最佳答案

试试这个

  • 我也有这个问题。我使用了下面的代码,然后它在没有刷新 Activity 的情况下更改了语言

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);
// Checks the active language
if (newConfig.locale == Locale.ENGLISH) {
Toast.makeText(this, "English", Toast.LENGTH_SHORT).show();
} else if (newConfig.locale == Locale.FRENCH){
Toast.makeText(this, "French", Toast.LENGTH_SHORT).show();
}
}

  • 在 list android:configChanges="locale"中声明

关于android - 在不重新启动 Activity 的情况下更改语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47035611/

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