Строки во фрагменте не меняются после смены языка - PullRequest
0 голосов
/ 03 августа 2020

После того, как я изменил язык с помощью метода languages.setOnPreferenceChangeListener(), я не могу сразу увидеть изменение языка. После перезапуска приложения меняются все строки, кроме тех, что указаны на экране настроек. Как изменить строки во фрагменте? Вот мой код в SettingsActivity. java

public class SettingsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings_activity);
        Fragment settingsFragment = new Fragment();
        getSupportFragmentManager().beginTransaction().replace(R.id.settings, settingsFragment).commit();
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);

        }
        getSupportFragmentManager().beginTransaction().detach(settingsFragment).attach(new SettingsFragment()).commit();
    }

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        return false;
    }

    public static class SettingsFragment extends PreferenceFragmentCompat {
        ListPreference languages;

        @Override
        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
            setPreferencesFromResource(R.xml.root_preferences, rootKey);

        }

        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            languages = getPreferenceManager().findPreference("language");
            languages.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                                                        @Override
                                                        public boolean onPreferenceChange(Preference preference, Object newValue) {
                                                            boolean anyChanges = false;
                                                            if (newValue.toString().equals("turkish")) {
                                                                LocaleHelper.setLocale(getContext(), "tr");
                                                                anyChanges = true;
                                                            }
                                                            if (newValue.toString().equals("english")) {
                                                                LocaleHelper.setLocale(getContext(), "en");
                                                                anyChanges = true;
                                                            }
                                                            if (anyChanges) {
                                                                //Here I want to change the language of the titles
                                                            }

                                                            return true;
                                                        }

                                                    }
            );

            return super.onCreateView(inflater, container, savedInstanceState);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...