在登录屏幕上创建我在英语和西班牙语中使用语言位置的应用程序。一旦用户登录,整个应用程序将根据他们的语言选择工作。它的工作正常。
但是现在我记得我的复选框,当点击复选框时,用户不会打开登录屏幕,它会直接在主屏幕上切换,应用程序应该在他们的语言选择上工作。我知道我必须以共享偏好存储语言,但我不知道如何优先存储特定语言。
if ((PreferenceClass.getBooleanPreferences(LoginActivity.this, Constant.IS_LOGIN))) {
startActivity(new Intent(LoginActivity.this, DashBoardActivity.class));
finish();
} else {
setContentView(R.layout.activity_login);
mContext = this;
init();
}
init(){
mEnglishBox = (LinearLayout) findViewById(R.id.checkBoxLEnglish);
mEnglishBox.setOnClickListener(this);
mSpanishBox = (LinearLayout) findViewById(R.id.checkBoxLSpanish);
mSpanishBox.setOnClickListener(this);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
PreferenceClass.setBooleanPreference(mContext, Constant.IS_LOGIN, true);
} else {
PreferenceClass.setBooleanPreference(mContext, Constant.IS_LOGIN, false);
}
}
});}
public void onClick(View view) {
switch (view.getId()) {
case R.id.checkBoxLEnglish:
isEnglish = true;
mEnglishBox.setBackgroundColor(Color.parseColor("#00DB00"));
mSpanishBox.setBackgroundColor(Color.TRANSPARENT);
setLocaleLanguage(mContext, "en");
break;
case R.id.checkBoxLSpanish:
isEnglish = false;
mSpanishBox.setBackgroundColor(Color.parseColor("#00DB00"));
mEnglishBox.setBackgroundColor(Color.TRANSPARENT);
setLocaleLanguage(mContext, "es");
break;
default:
break;
}
}
public void setLocaleLanguage(Context context, String lang) {
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
context.getApplicationContext().getResources().updateConfiguration(config, null);
setUIForLanguage();
}
答案 0 :(得分:1)
可能会有以下内容(例如在“设置”类中)
private final SharedPreferences preferences;
public void setSelectedLanguage(String selectedLanguageCpde) {
SharedPreferences.Editor editor = preferences.edit();
editor.putString(SELECTED_LANGUAGE, selectedLanguageCpde);
editor.commit();
}
public String getSelectedLanguage() {
return preferences.getString(SELECTED_LANGUAGE, "en");
}