Skocz do zawartości
daktarin

Niepotrzebna zmiana języka po rotacji ekranu

    Rekomendowane odpowiedzi

    Witajcie,

    w aplikacji mam trzy buttony - każdy z nich odpowiada za zmianę wersji językowej aplikacji.

    [PL]
     

    setLocale("pl");

    [DE]
     

    setLocale("de");

    [EN]
     

    setLocale("en");

    Sama funckcja wygląda tak:

    public void setLocale(String lang) {
    
        myLocale = new Locale(lang);
        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = myLocale;
        res.updateConfiguration(conf, dm);
        Intent refresh = new Intent(this, MainActivity.class);
        startActivity(refresh);
    
        this.finish();
    
    }

    W ramach aplikacji mam jedną aktywność. Zmiana języka działa poprawnie do momentu kiedy nie wykonam akcji rotacji ekranu (odpalając jeden z layoutów muszę przełączyć się na widok poziomy). I tu pojawia się problem, bo "gubi" mi się aktualnie wybrana wersja językowa (np. na niemiecka wraca na polską - czyli na taką jak mam na fonie).

    Kombinowałem na rózne sposoby ze zmianą parametru w pliku AndroidManifest:

    <activity android:name=".MainActivity"
    
        android:configChanges="orientation|keyboardHidden">

    Niestety, nie rozwiązało to mojego problemu.. Macie jakieś pomysły?

    Dzięki za wszelką pomoc!

    Marcin

     

     

    Edytowane przez daktarin

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    senega

    Zmianę języka zapisuj w sharedpreferences i stamtąd odczytuj przy starcie activity.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Dzięki!!! Obadam w najbliższym czasie, ale na pierwszy rzut oka wygląda to obiecująco. PIWKO!!!!

    Wysłane z mojego SM-G930F przy użyciu Tapatalka

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    szykam

    Jeśli wybrany język nie musi być zapisywany permanentnie to możesz spokojnie użyć metod cyklu życia Activity. w onSaveInstanceState(Bundle bundle) zapisujesz stan i w onCreate(Bundle bundle) wyłuskujesz zapisany stan (wartość). Więcej tutaj https://developer.android.com/guide/components/activities/activity-lifecycle.html, sekcja Saving and restoring activity state

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x