我有一个支持两种语言的应用程序,当我更改语言时应用程序运行良好,但是当我重新启动应用程序或旋转屏幕时,语言恢复为默认值。我想要做的是保存语言,然后应用程序应该使用上次保存的语言,即使在重新启动或旋转屏幕后也是如此。我做了很多研究并找到了一些解决方案,这些解决方案谈论了 localeHelper 和 Application 类以及其他方式,但无论如何它们都没有帮助我,或者我可能不太了解它们。提前致谢。这是我的代码:@Overrideprotected 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; } });
1 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
checkLanguage
使用compareTo
(或)不为所有字符串比较('ar','en'...)equals
引用相等(==
)。
if (langCode.compareTo("ar") == 0) { ...}
或者
if (langCode.equals("ar")) {}
见https://stackoverflow.com/a/513839/2711811
添加回答
举报
0/150
提交
取消