Я нашел действительно странную ошибку, которая воспроизводится только на устройствах Android N.
В гастролях моего приложения есть возможность изменить язык. Вот код, который его изменяет.
 public void update(Locale locale) {
    Locale.setDefault(locale);
    Configuration configuration = res.getConfiguration();
    if (BuildUtils.isAtLeast24Api()) {
        LocaleList localeList = new LocaleList(locale);
        LocaleList.setDefault(localeList);
        configuration.setLocales(localeList);
        configuration.setLocale(locale);
    } else if (BuildUtils.isAtLeast17Api()){
        configuration.setLocale(locale);
    } else {
        configuration.locale = locale;
    }
    res.updateConfiguration(configuration, res.getDisplayMetrics());
}
Этот код отлично работает в действии моего тура (с вызовом recreate()), но во всех последующих действиях все ресурсы String ошибочны. Вращение экрана исправляет его. Что я могу сделать с этой проблемой? Должен ли я менять локаль для Android N по-другому или это просто системная ошибка?
P.S. Вот что я нашел. При первом запуске MainActivity (который после моего тура) Locale.getDefault() правильный, но ресурсы неправильные. Но в других действиях это дает мне неправильную локаль и неправильные ресурсы из этой локали. После поворота экрана (или, возможно, другого изменения конфигурации) Locale.getDefault() будет правильным.