首页 > 解决方案 > Xamarin.Android 总是获取以前选择的语言而不是当前的

问题描述

我正在 Xamarin.Android 中开发一个应用程序,我正在使用获取当前系统语言

CultureInfo.CurrentUICulture.TwoLetterISOLanguageName;

它返回当前系统语言,但是当我关闭应用程序并转到设置并将语言更改为另一种语言并再次打开应用程序时,它仍然只返回旧语言。当我重新安装应用程序时,它会向我显示新语言。

标签: xamarinxamarin.android

解决方案


我创建了一个简单的 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;
        }
    }

推荐阅读