I have the problem that when you change the language you only do it in the main activity, when you change to another you return to the default language, I guess I misuse the shared preference because when you start the app you return to the default language , any help?
public void choiceLan(View view) {
CharSequence myList[] = {"English", "Español", "Otro"};
// String [] idiomas={"English","Español","Murciano"};
AlertDialog.Builder builder = new AlertDialog.Builder( this );
builder.setTitle( "Elige idoma" );
builder.setSingleChoiceItems( myList, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
lengua = "en";
locale = new Locale( "en" );
Locale.setDefault( locale );
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration( config,
getBaseContext().getResources().getDisplayMetrics() );
guardarPreferencias();
break;
case 1:
lengua = "es";
locale = new Locale( "es" );
Locale.setDefault( locale );
config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration( config,
getBaseContext().getResources().getDisplayMetrics() );
guardarPreferencias();
break;
case 2:
String dfault = locale.getLanguage();
locale = new Locale( dfault );
Locale.setDefault( locale );
config = new Configuration();
config.locale = locale;
context.getApplicationContext().getResources().updateConfiguration( config, null );
guardarPreferencias();
break;
}
getResources().updateConfiguration( config, null );
Intent refresh = new Intent( MainActivity.this, MainActivity.class );
startActivity( refresh );
}
} );
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.main_activity );
Toolbar toolbar = findViewById( R.id.toolbar );
setSupportActionBar( toolbar );
Resources res = getResources();
Configuration conf = res.getConfiguration();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences( this );
String def = Locale.getDefault().getDisplayLanguage();
String lang = prefs.getString( "LANGUAGE", def );
conf.locale = new Locale( lang );
res.updateConfiguration( conf, res.getDisplayMetrics() );