Невозможно изменить текст после изменения локали

Я пытаюсь использовать два языка в своем приложении. У меня есть разные файлы string.xml в моем проекте. Я пытаюсь сменить язык вот так

public class LocaleManager {

public static final String LANGUAGE_ENGLISH   = "en";
public static final String LANGUAGE_GEORGIAN = "ka";
private static final String LANGUAGE_KEY       = "language_key";

public static Context setLocale(Context c) {
    return updateResources(c, getLanguage(c));
}

public static Context setNewLocale(Context c, String language) {
    persistLanguage(c, language);
    return updateResources(c, language);
}

public static String getLanguage(Context c) {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(c);
    return prefs.getString(LANGUAGE_KEY, LANGUAGE_ENGLISH);
}

@SuppressLint("ApplySharedPref")
private static void persistLanguage(Context c, String language) {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(c);

    prefs.edit().putString(LANGUAGE_KEY, language).commit();
}

private static Context updateResources(Context context, String language) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        Resources resources = context.getResources();
        Configuration configuration = resources.getConfiguration();
        configuration.setLocale(new Locale(language));
        context.getApplicationContext().createConfigurationContext(configuration);
    } else {
        Locale locale = new Locale(language);
        Locale.setDefault(locale);
        Configuration config = context.getResources().getConfiguration();
        config.locale = locale;
        context.getResources().updateConfiguration(config,
                context.getResources().getDisplayMetrics());
    }
    return context;
}

public static Locale getLocale(Resources res) {
    Configuration config = res.getConfiguration();
    return Build.VERSION.SDK_INT >= 24 ? config.getLocales().get(0) : config.locale;
}

Я использую свой класс, как это в кнопке onClick

 flagImg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (!LocaleManager.getLanguage(LauncherActivity.this).equals(LocaleManager.LANGUAGE_ENGLISH))
                    LocaleManager.setNewLocale(LauncherActivity.this, LocaleManager.LANGUAGE_ENGLISH);
                else
                    LocaleManager.setNewLocale(LauncherActivity.this, LocaleManager.LANGUAGE_GEORGIAN);


                Intent i = new Intent(LauncherActivity.this, LauncherActivity.class);
                startActivity(i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK));
                overridePendingTransition(R.anim.fade_in_dialog, R.anim.fade_out_dialog);

            }
        });

У меня есть два вопроса:

1) Я проверил это, и локаль успешно меняется, но я не могу изменить setText, Можно ли изменить setText без обновления activity?

2) После того, как язык изменился, я пытаюсь использовать мой setText в onCreate метод, но все еще не может изменить его

Как я могу решить эту проблему?

0 ответов

Другие вопросы по тегам