Как сохранить выбранный язык приложения в общих настройках android - PullRequest
1 голос
/ 14 июля 2020

Я новый разработчик приложения. Как сделать выбор языка пользователя для сохранения, чтобы не потерять его после перезапуска приложения. Извините, чтобы задать вопрос еще раз, но я пытался работать над нашими предыдущими сообщениями и не работал со мной.

мой код:

public class Arabic extends AppCompatActivity {
    Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.arabic);

        findViewById(R.id.BTN_ar).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                setLocale("ar");
            }
        });
        findViewById(R.id.BTN_en).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                setLocale("en");
            }
        });

        toolbar = findViewById(R.id.toolbar);
        toolbar.setTitle(getResources().getString(R.string.app_name));
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(Arabic.this, MainActivity.class));
                finish();
            }
        });


        

    }

    @SuppressWarnings("deprecation")
    public void setLocale(String lang) {
        Locale myLocale = new Locale(lang);
        DisplayMetrics dm = getResources().getDisplayMetrics();
        Configuration conf = getResources().getConfiguration();
        conf.locale = myLocale;
        getResources().updateConfiguration(conf, dm);
        Intent refresh = new Intent(this, Arabic.class);
        startActivity(refresh);


    }


}

введите описание изображения здесь

1 Ответ

1 голос
/ 14 июля 2020

Use SharedPreferences,

При нажатии кнопки выбора языка вы можете добавить язык как таковой:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("LOCALE", lang);
editor.commit();

Чтобы убедиться, что изменения применяются при перезапуске приложения, вы может переопределить класс Application и установить там локаль, получив его как:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
String locale = sharedPref.getString("LOCALE", defaultValue);

Это, конечно, простой способ сделать это, в идеале у вас должен быть класс для хранения всех ваших общих предпочтений.

Дополнительную информацию можно найти в Общие настройки и изменение локали .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...