xamarin - Xamarin.Android 总是获取以前选择的语言而不是当前的
问题描述
我正在 Xamarin.Android 中开发一个应用程序,我正在使用获取当前系统语言
CultureInfo.CurrentUICulture.TwoLetterISOLanguageName;
它返回当前系统语言,但是当我关闭应用程序并转到设置并将语言更改为另一种语言并再次打开应用程序时,它仍然只返回旧语言。当我重新安装应用程序时,它会向我显示新语言。
解决方案
我创建了一个简单的 xamarin.android 项目,正如我在评论中解释的那样,我把 CultureInfo.CurrentUICulture.TwoLetterISOLanguageName; 在 OnResume() 方法中。然后我启动应用程序,转到设置应用程序更改语言,然后再次打开应用程序,它返回旧语言。但是,如果我通过将应用程序滑出任务堆栈来停止应用程序,然后再次打开应用程序,它会返回新语言。代码是这样的:
public class MainActivity : AppCompatActivity
{
TextView tv;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
}
protected override void OnResume()
{
base.OnResume();
var lang = System.Globalization.CultureInfo.CurrentCulture.TwoLetterISOLanguageName;
Log.Debug("OnResume", lang);
tv = FindViewById<TextView>(Resource.Id.textView1);
tv.Text = lang;
}
}
推荐阅读
- rust - Rust PathBuf 如何防止目录遍历攻击?
- r - 如何让这个简单的功能更高效?
- python - 从大型 Excel 文件中获取工作表名称
- javascript - 如何从与特定字符匹配的对象数组中提取属性(包含查询)
- google-apps-script - Google Script SetFormula 转义引号
- javascript - 从填充列表中获取选定的选项 ID
- r - 考虑“缺失”值,处理应输入 0 的实例
- jersey - 在类或方法上注入的@Context 有什么不同吗?
- node.js - ES6 async/await 并行处理
- sql-server - 没有显示错误,但存储过程不会在按钮单击时执行