2016-12-03 33 views
0

創建我正在使用的應用程序語言地點用於登錄屏幕上的英語和西班牙語。一旦用戶登錄,整個應用程序將基於其語言選擇進行工作。它的工作正常。將語言地點存儲爲首選項

但現在我有記得我複選框,點擊複選框時,用戶將無法登錄屏幕上切換,它會主屏幕和應用程序上直接切換應該是他們的語言選擇的工作。我知道這一點,我必須在共享首選存儲語言,但我不知道如何優先存儲特定的語言。

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

檢查這個答案:http://stackoverflow.com/questions/32813934/save-language-chosen-by-user -android – rafsanahmad007

回答

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"); 
} 
+0

我沒有看到更新的解決方案中使用上述代碼。 –