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
뒤에 코드에 있어야합니다 :