重启或旋转屏幕后恢复默认语言

我有一个支持两种语言的应用程序,当我更改语言时应用程序运行良好,但是当我重新启动应用程序或旋转屏幕时,语言恢复为默认值。


我想要做的是保存语言,然后应用程序应该使用上次保存的语言,即使在重新启动或旋转屏幕后也是如此。


我做了很多研究并找到了一些解决方案,这些解决方案谈论了 localeHelper 和 Application 类以及其他方式,但无论如何它们都没有帮助我,或者我可能不太了解它们。


提前致谢。


这是我的代码:


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);


    checkLanguage();


    setContentView(R.layout.activity_profile);


    final Toolbar toolbar = findViewById(R.id.toolbar);

    setSupportActionBar(toolbar);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {

        @Override

        public boolean onMenuItemClick(MenuItem menuItem) {

            Intent i;

            switch(menuItem.getItemId()){

                case R.id.reset_app:

                    startActivity(new Intent(ProfileActivity.this, MainActivity.class));

                    break;

                case R.id.arabic:

                    PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().putString("language", "ar").commit();

                    language("ar");

                    i = getBaseContext().getPackageManager().getLaunchIntentForPackage( getBaseContext().getPackageName() );

                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

                    startActivity(i);

                    break;

                case R.id.english:

                    PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().putString("language", "en").commit();

                    language("en");

                    i = getBaseContext().getPackageManager().getLaunchIntentForPackage( getBaseContext().getPackageName() );

                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

                    startActivity(i);

                    break;

            }

            return true;

        }

    });


芜湖不芜
浏览 112回答 1
1回答

慕哥9229398

checkLanguage使用compareTo(或)不为所有字符串比较('ar','en'...)equals引用相等(==)。if (langCode.compareTo("ar") == 0) {    ...}或者if (langCode.equals("ar")) {}见https://stackoverflow.com/a/513839/2711811
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java