Java Android:在 mainActivity 中单击更改区域设置

问题描述 投票:0回答:0

我希望我的应用程序支持 2 种语言,en 和 it,所以我创建了一个 Switch 来更改 mainActivity 中的语言环境。 这个想法是改变语言环境并重新启动传递新语言的活动。 我使用 API 28 来支持更多设备。

我试过了,但没用。 有时更改语言环境,但只更改一次。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        activityContext = this.getApplicationContext();
        setContentView(R.layout.activity_main);

        language = findViewById(R.id.language);


        String lan = getIntent().getStringExtra("lan");
        if(lan != null) {
            if(lan.equals("ita")) {
                language.setChecked(true);
                lang = "ita";
            }else lang = "eng";
        }else if(Locale.getDefault().toString().startsWith("it")){
            language.setChecked(true);
            lang = "ita";
        }

        buttonPlay.setOnClickListener(view -> enterRoom());
        language.setOnCheckedChangeListener((compoundButton, b) -> {
            lang = b? "ita" : "eng";
            setLocale(lang);
        });
    }

    private void setLocale(String lang){
        Locale locale = new Locale(lang.substring(0, 2));
        Locale.setDefault(locale);
        Resources resources = getResources();
        Configuration configuration = resources.getConfiguration();
        configuration.setLocale(locale);
        getApplicationContext().createConfigurationContext(configuration);
        Intent i = getIntent();
        i.putExtra("lan",lang);
        finish();
        startActivity(i);
    }
java android locale
© www.soinside.com 2019 - 2024. All rights reserved.