Как я могу изменить язык фрагмента без изменения языка телефона? - PullRequest
0 голосов
/ 18 марта 2020

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

Я использую

 private void setLocale(String lang) {
        Locale locale= new Locale(lang);
        Locale.setDefault(locale);
        Configuration config=new Configuration();
        config.locale=locale;
        getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
        SharedPreferences.Editor editor=getSharedPreferences("Settings",MODE_PRIVATE).edit();
        editor.putString("My_Lang",lang);
        editor.commit();

    }

    public void loadLocale(){
        SharedPreferences editor=getSharedPreferences("Settings",Splash.MODE_PRIVATE);
        String language=editor.getString("My_Lang","My_Lang");
        Log.d("hahahahahahdhjzshsdj",language);
        setLocale(language);


    }

и

private void showChangeLanguageDialog() {
        final String[] listLang={"Francais","العربية","English"};
        AlertDialog.Builder onBuilder=new AlertDialog.Builder(Splash.this);
        onBuilder.setTitle("Choose Language...");
        onBuilder.setSingleChoiceItems(listLang, -1, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                if(which==0){
                    setLocale("fr");
                    recreate();
                    Intent intent=new Intent(Splash.this,Splash2.class);
                    startActivity(intent);
                }
                else if(which==1){

                    setLocale("ar");
                    recreate();
                    Intent intent=new Intent(Splash.this,Splash2.class);
                    startActivity(intent);
                }
                else if(which==2){

                    setLocale("en");
                    recreate();
                    Intent intent=new Intent(Splash.this,Splash2.class);
                    startActivity(intent);
                }

                dialog.dismiss();
            }
        });
        AlertDialog mDialog=onBuilder.create();
        mDialog.show();
    }

Итак, когда я запускаю приложение, у меня появляется alertDialog, чтобы выбрать язык, после выбора оно изменило единственное бездействие, но не во фрагменте, у меня 6 фрагментов

Как я могу это исправить?

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