Метод createConfigurationContext
Метод createConfigurationContext класса
Context
оборачивает текущий context с новым объектом
Configuration: локаль, плотность,
тёмная тема и другие флаги.
Строки из resources
читают уже через возвращённый context.
Оригинальный context activity не меняется.
Синтаксис
val localized = createConfigurationContext(overrideConfig)
Параметры
| Параметр | Описание |
|---|---|
overrideConfiguration |
Полная или частичная Configuration
с нужными полями поверх текущей.
|
Пример
Давайте прочитаем строку ресурса через context с новой локалью:
import android.content.res.Configuration
import android.os.Bundle
import android.os.LocaleList
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
import java.util.Locale
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val config = Configuration(resources.configuration)
config.setLocales(LocaleList(Locale.US))
val ctx = createConfigurationContext(config)
val locale = ctx.resources.configuration.locales[0]
val label = if (locale == Locale.US) "abcde" else "12345"
setContent {
Text(text = label)
}
}
}
На экране текст "abcde" для локали US,
прочитанной через обёрнутый context.
Смотрите также
-
класс
Context,
который создаёт производный context -
класс
LocalContext,
который даёт context composable по умолчанию -
метод
getSharedPreferences,
который тоже зависит от context -
класс
Activity,
у которой базовая configuration экрана