shared preference language Android

0

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() );
    
asked by lujan 20.05.2018 в 22:01
source

0 answers