класс синглтона конфликтует с направлением компоновки в локализации Android - PullRequest
0 голосов
/ 28 января 2019

Я установил языковые предпочтения в настройках моего приложения.Содержит ltr ||rtl языки.когда для local установлено значение rtl, например ar или fa , все мои действия вступят в силу и изменят как язык, так и направление компоновки, кроме той, в которой я использую одноэлементный класс внутриэто (это действие меняется на новый локальный, но направление макета не меняется).

public class FFmpeg{
    private static final FFmpeg instance = new FFmpeg();

    public static synchronized FFmpeg getInstance() {
        return instance;
    }
}


public boolean isCommandRunning(FFtask task) {
    return null != task && !task.isProcessCompleted();
}

И все мои действия расширяют базовую деятельность:

public abstract class AppCompatThemeActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(changeLang(newBase, "fa"));
    }

    public static ContextWrapper changeLang(Context context, String lang_code) {
        Configuration config = context.getResources().getConfiguration();
        if (!"".equals(lang_code)) {
            Locale locale = new Locale(lang_code);
            Locale.setDefault(locale);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                config.setLocale(locale);
            } else {
                config.locale = locale;
            }
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                context = context.createConfigurationContext(config);
            } else {
                context.getResources().updateConfiguration(config,
                        context.getResources().getDisplayMetrics());
            }
        }
        return new ContextWrapper(context);
    }

}

Почему это происходит?

...