在偏好中存储语言位置

时间:2016-12-03 10:22:43

标签: android

在登录屏幕上创建我在英语和西班牙语中使用语言位置的应用程序。一旦用户登录,整个应用程序将根据他们的语言选择工作。它的工作正常。

但是现在我记得我的复选框,当点击复选框时,用户不会打开登录屏幕,它会直接在主屏幕上切换,应用程序应该在他们的语言选择上工作。我知道我必须以共享偏好存储语言,但我不知道如何优先存储特定语言。

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();
}

1 个答案:

答案 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");
}