アプリにクロアチア語と英語のローカリゼーションを実装しました。ユーザーは で言語を変更できますPreferenceActivity
。
これはコードです:
public class SettingsActivity extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {...}
@Override
protected void onResume() {...}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals("language")) {
String language= sharedPreferences.getString(key, "1");
if (language.equals("2")) {
switchLang("en");
} else {
switchLang("hr");
}
}
}
private void switchLang(String langCode) {
Locale locale = new Locale(langCode);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
onCreate(null);
}
}
そして、私は res フォルダーに次のような構造を持っています:
フォルダー drawable-en-hdpi と drawable-hr-hdpi には、もちろん同じ名前の画像があります。
問題は、言語を変更するPreferenceActivity
と、アプリケーションのすべてのアクティビティですべてが正常に機能することです(すべての文字列参照と描画可能参照は正しいです)。私の主な活動でのみ、描画可能な参照は常に drawable-hr-hdpi フォルダーからのものです。なぜそこで変わらないのですか?そして最高の部分は、私のメイン アクティビティの文字列参照も正しく機能することです。
ティア!