gpt4 book ai didi

android - 为什么当方向改变时,区域设置会在 PreferenceActivity 上被覆盖?

转载 作者:太空狗 更新时间:2023-10-29 12:44:51 26 4
gpt4 key购买 nike

我有一个应用程序,用户可以在其中更改其语言。

一切正常,我的 MainActivity.onCreate() 上只有这段代码:

String lang = PreferenceManager.getDefaultSharedPreferences(this).getString("languagePref", "default");
Configuration config = getResources().getConfiguration();
if( lang.equals("default") ) lang = Locale.getDefault().getLanguage();
config.locale = new Locale(lang);
getResources().updateConfiguration(config, getResources().getDisplayMetrics());

当我重新启动应用程序或浏览 Activity 时,它仍然以正确的语言显示。

唯一的问题出在 PreferenceActivity 屏幕上。当方向改变时,PreferenceActivity 标题(并且只有它)会更改为默认设备语言。

prefs 仍然被正确检查,如果我返回(关闭 PreferenceActivity)应用程序仍然使用正确的语言,但是 PreferenceActivity 保持错误直到我重新启动应用程序。

我尝试在 PreferenceActivity.onCreate() 上强制执行上面的代码,虽然调试似乎没问题,但 PrefenceActivity 标题仍然是错误的。

这是我的 PrefenceActivity 代码:

public class PreferencesActivity extends PreferenceActivity {

@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}

此行为不会发生在任何其他 Activity 上:/

锁定屏幕方向不是一个选项。

有什么想法吗?

谢谢。

最佳答案

好的,这对我来说已经解决了。

@Override
protected void onSaveInstanceState(Bundle outState) {
String lang = PreferenceManager.getDefaultSharedPreferences(this).getString("languagePref", "default");
Configuration config = getResources().getConfiguration();
if( lang.equals("default") ) lang = Locale.getDefault().getLanguage();
config.locale = new Locale(lang);
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
super.onSaveInstanceState(outState);
}

关于android - 为什么当方向改变时,区域设置会在 PreferenceActivity 上被覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19919654/

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