2013-06-10 2 views
0

방금 ​​내 첫 번째 안드로이드 응용 프로그램 인 을 끝 냈지만 아직 해결해야 할 문제가 조금 있습니다. 두 언어로 된 내 응용 프로그램을 만들었습니다. 내 휴대 전화가 프랑스어로 실행되도록 설정되어있는 경우 앱이 프랑스어로 표시되고 휴대 전화가 영어로 설정되어있는 경우 영어로 실행됩니다. 문제는 내가 공유 환경 설정 값을 만들어 앱 사용자에게 허용하고, 수동으로 원하는 언어를 선택하면 불행히도 작동하지 않습니다.응용 프로그램 언어를 공유 환경 설정에서 설정

이 내 공유 취향입니다 :

<ListPreference 
     android:defaultValue="English" 
     android:entries="@array/Languages" 
     android:entryValues="@array/LanguagesValues" 
     android:key="language" 
     android:summary="@string/Define_the_default_language" 
     android:title="@string/Language" /> 

이 내가 그것을 구현하는 시도하는 방법이다 :

SharedPreferences pref = PreferenceManager 
      .getDefaultSharedPreferences(this); 
    lan = pref.getString("language", null); 
    Log.e("langues", lan); 

    SharedPreferences prefs = this.getSharedPreferences("language", 0); 
    listener = new SharedPreferences.OnSharedPreferenceChangeListener() { 

     public void onSharedPreferenceChanged(SharedPreferences prefs, 
       String key) { 
      prefs.registerOnSharedPreferenceChangeListener(listener); 
      if (lan.equals("FRENSH")) { 
       setLocale("FRENSH"); 
       System.out.println("frensh"); 

SETLOCAL 활동

public void setLocale(String lang) { 
    myLocale = new Locale(lang); 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    conf.locale = myLocale; 
    Log.e("", "" + myLocale); 
    res.updateConfiguration(conf, dm); 
    Intent refresh = new Intent(this, Setting.class); 
    startActivity(refresh); 
} 

내가 그것을 어떻게 해결할 수 ?

final ListPreference localeListPreference = (ListPreference) findPreference("language"); 
localeListPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
      @Override 
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
      if (newValue.toString().equals("FRENSH")) { 
       setLocale("FRENSH"); 
      } 

      return true; // if you do not return true, the change would not persist 
     }); 

위의 코드가 preference.xml 뒤에 코드에 있어야합니다 :

답변

0

나는 당신의 setLocale가 특정 로케일 환경 설정에 리스너를 설정하려고 소위되지 않습니다 것을 생각한다.

관련 문제