如何保存最后选择的语言?
How to save the last selected language?
我正在 android 应用程序中添加多语言功能。
每当我更改语言时,它都会很好地改变。但在重新打开应用程序后,它再次显示选择语言屏幕。
我想保存上次选择的语言,所以下次当用户重新打开应用程序时,它不应该显示选择语言屏幕,它应该直接转到下一页,并且应该以上次选择的语言显示项目。
该怎么办?任何解决方案?
请检查以下代码。
在这段代码中
我必须在哪里存储 SharedPreferences 以及我必须在哪里获得 sharedpreference
@Override
public void onItemSelected(SelectableItem selectableItem) {
List<Item> selectedItems = adapter.getSelectedItems();
if(selectableItem.getName().equals("English")){
if (userSessionManager.isLoggedIn()) {
Intent intent = new Intent(LanguageListActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
setLanguage("en");
} else {
Intent intent = new Intent(LanguageListActivity.this, LoginActivity.class);
Log.d("Login", "firgage");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
setLanguage("en");
}
}else if(selectableItem.getName().equals("Hindi(हिंदी)")){
if (userSessionManager.isLoggedIn()) {
Intent intent = new Intent(LanguageListActivity.this, MainHindiActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
setLanguage("hi");
} else {
Intent intent = new Intent(LanguageListActivity.this, LoginhindiActivity .class);
Log.d("hLogin", "firhin");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
setLanguage("hi");
String lang = "hi";
}
}
}
protected void setLanguage(String language){
mylocale=new Locale(language);
Resources resources=getResources();
DisplayMetrics dm=resources.getDisplayMetrics();
Configuration conf= resources.getConfiguration();
conf.locale=mylocale;
resources.updateConfiguration(conf,dm);
//Intent refreshIntent=new Intent(LanguageListActivity.this,MainActivity.class);
finish();
//startActivity(refreshIntent);
}
I want to save the last selected language - For this you need to use SharedPreferences
SharedPreferences 参考:shared preferences
要存储在 SharedPreferences 中:
SharedPreferences sharedPref = getActivity().getPreferences(MY_PREFS_NAME,Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("lang", language);
editor.commit();
获取 SharedPreferences :
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
MY_PREFS_NAME, Context.MODE_PRIVATE);
String language = sharedPref.getString("lang", null);
在 activity onCreate 中检查此共享首选项是否为空。如果为空则显示语言屏幕,如果不为空则显示主屏幕。
More about SharedPreferences
我正在 android 应用程序中添加多语言功能。
每当我更改语言时,它都会很好地改变。但在重新打开应用程序后,它再次显示选择语言屏幕。
我想保存上次选择的语言,所以下次当用户重新打开应用程序时,它不应该显示选择语言屏幕,它应该直接转到下一页,并且应该以上次选择的语言显示项目。
该怎么办?任何解决方案?
请检查以下代码。
在这段代码中
我必须在哪里存储 SharedPreferences 以及我必须在哪里获得 sharedpreference
@Override public void onItemSelected(SelectableItem selectableItem) {
List<Item> selectedItems = adapter.getSelectedItems();
if(selectableItem.getName().equals("English")){
if (userSessionManager.isLoggedIn()) {
Intent intent = new Intent(LanguageListActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
setLanguage("en");
} else {
Intent intent = new Intent(LanguageListActivity.this, LoginActivity.class);
Log.d("Login", "firgage");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
setLanguage("en");
}
}else if(selectableItem.getName().equals("Hindi(हिंदी)")){
if (userSessionManager.isLoggedIn()) {
Intent intent = new Intent(LanguageListActivity.this, MainHindiActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
setLanguage("hi");
} else {
Intent intent = new Intent(LanguageListActivity.this, LoginhindiActivity .class);
Log.d("hLogin", "firhin");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
setLanguage("hi");
String lang = "hi";
}
}
}
protected void setLanguage(String language){
mylocale=new Locale(language);
Resources resources=getResources();
DisplayMetrics dm=resources.getDisplayMetrics();
Configuration conf= resources.getConfiguration();
conf.locale=mylocale;
resources.updateConfiguration(conf,dm);
//Intent refreshIntent=new Intent(LanguageListActivity.this,MainActivity.class);
finish();
//startActivity(refreshIntent);
}
I want to save the last selected language - For this you need to use SharedPreferences
SharedPreferences 参考:shared preferences
要存储在 SharedPreferences 中:
SharedPreferences sharedPref = getActivity().getPreferences(MY_PREFS_NAME,Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("lang", language);
editor.commit();
获取 SharedPreferences :
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
MY_PREFS_NAME, Context.MODE_PRIVATE);
String language = sharedPref.getString("lang", null);
在 activity onCreate 中检查此共享首选项是否为空。如果为空则显示语言屏幕,如果不为空则显示主屏幕。
More about SharedPreferences