Как исправить многоязычное приложение от автоматического изменения языка при изменении ориентации? - PullRequest
0 голосов
/ 19 мая 2019

У меня есть два языка в Android Studio, я сделал с изменением языков. Но проблема в том, что когда я поворачиваю приложение, автоматически меняю язык по умолчанию. Как я мог преодолеть это, в моей программе я использовал представление переработчика в качестве языкового меню, а затем щелкните на представлении реселлера. Я вызвал локальный интерфейс прослушивателя и переопределил заданный локальный метод в основном упражнении.

В моей основной деятельности у меня есть метод переопределения setlocal(), который отлично работает, но при вращении он переходит на английский. гениальные люди, дайте мне код для них.

public class LanguageActivity extends AppCompatActivity implements LocaleListener {

    private List<Languages>languagesList=new ArrayList<>();
    private RecyclerView recyclerView;
    private LanguageAdapter languageAdapter;
    private String langword="ar";

    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
        setLocale(langword);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);

        setLocale(langword);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_language);
        RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(this, 3);
        recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        languageAdapter = new LanguageAdapter(languagesList);
        recyclerView.setLayoutManager(mLayoutManager);
        languageAdapter.setLocaleListener(this);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setAdapter(languageAdapter);
        prepareLanguageData();
    }

    private void prepareLanguageData() {

        Languages languages = new Languages("English");
        languagesList.add(languages);
        languages = new Languages("العَرَبِيَّة");
        languagesList.add(languages);
 @Override
    public void setLocale(String lang) {

        langword= lang;
        Locale[] locales = Locale.getAvailableLocales();
        boolean is_supported=false;
        for (int i = 0; i < locales.length; i++) {
            if(lang.equals(locales[i].toString()))
            {
                is_supported=true;
                break;
            }
            Log.e( "Languages",i+" :"+ locales[i]);
        }
        if(is_supported) {
            Locale myLocale = new Locale(lang);
            Resources res = getResources();
            DisplayMetrics dm = res.getDisplayMetrics();
            Configuration conf = res.getConfiguration();
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                conf.setLocale(myLocale);
            } else {
                conf.locale = myLocale;
            }
            res.updateConfiguration(conf, dm);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...