Desidero che la mia lingua cambi dinamicamente e sto cercando di utilizzare onConfigurationChanged ma non viene chiamata. Ho un MainActivity che crea la mia barra delle azioni e il viewpager. Il resto delle mie pagine sono Frammenti. Nel mio SettingsFragment ho un pulsante per passare la lingua al francese.Impostazioni locali: onConfigurationChanged non chiamato
langChange.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View vi) {
MainActivity main = (MainActivity)getActivity();
main.langChange();
}
});
Poi nel mio MainActivity devo
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
if (locale != null){
newConfig.locale = locale;
Locale.setDefault(locale);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
}
public void langChange(){
if(currentLanguage == FRENCH_LANGUAGE){
locale = new Locale("en");
Locale.setDefault(locale);
Configuration c = getBaseContext().getResources().getConfiguration();
c.locale = locale;
getBaseContext().getResources().updateConfiguration(c,getBaseContext().getResources().getDisplayMetrics());
currentLanguage = "English";
}
else if(currentLanguage == ENGLISH_LANGUAGE){
locale = new Locale("fr");
Locale.setDefault(locale);
Configuration c = getBaseContext().getResources().getConfiguration();
c.locale = locale;
getBaseContext().getResources().updateConfiguration(c,getBaseContext().getResources().getDisplayMetrics());
currentLanguage = "French";
}
actionBar.setSelectedNavigationItem(actionBar.getTabCount() - 1); //This just puts it back to the settings tab
}
Il onConfigurationChanged
non viene chiamato. Nel mio manifesto ho:
<activity android:name="MainActivity" android:screenOrientation="portrait" android:configChanges="locale"></activity>
Ho provato ad aggiungere una o tutte queste opzioni orientation|keyboardHidden|screenSize
senza successo.
Il motivo di tutto questo è perché voglio modificare il testo di azioneBar e tutto il resto del testo dopo aver fatto clic sul pulsante. Ho un file di stringhe separato per il francese.
Qualsiasi aiuto sarebbe fantastico.
Come fai a sapere che 'onConfigurationChanged' non viene chiamato? Hai un controllo per 'null' attorno al codice all'interno del metodo, che potrebbe essere il problema. Dai anche un'occhiata a questa domanda: http://stackoverflow.com/questions/6457659/android-onconfigurationchanged-not-being-called – Darwind
Ho aggiunto breakpoint prima e dopo anche l'istruzione if con 'Log.d'. So che non ha colpito questo metodo. Ho anche esaminato la domanda sopra e quelle risposte non risolvono il mio problema – BigT