提问人:JacksOnF1re 提问时间:4/19/2023 更新时间:7/18/2023 访问量:368
Android 会重新启动活动,但区域设置配置更改由应用处理
Android restarts activity although locales configuration changes are handled by app
问:
我按照路径在我的应用中实现每应用语言首选项。 如果用户是第一次打开应用程序,则会向用户显示一个用于选择一种可用语言的活动。
用户选择语言后,将调用 API 来
通知 Android 有关语言更改的信息。AppCompatDelegate
// This code will be called some time after onCreate()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
val selectedLanguageIso = "en"
val appLocale: LocaleListCompat = LocaleListCompat.forLanguageTags(selectedLanguageIso)
AppCompatDelegate.setApplicationLocales(appLocale)
}
因为我不希望 android 重新创建此活动,所以我在 Manifest 中添加了如下标志:android:configChanges="layoutDirection|locale"
<activity
android:name=".LanguageActivity"
android:screenOrientation="portrait"
android:configChanges="layoutDirection|locale"/>
但无论出于何种原因,android 都忽略了该标志,并且仍然重新创建我的活动,但只调用了第一次。
用户将看到一个奇怪的闪烁,然后她或他被导航到下一个活动。AppCompatDelegate.setApplicationLocales
它只会在第一次被忽略。如果我再次手动更改语言, 然后旗帜被尊重。
我需要注意的是,我选择退出自动区域设置存储。 因此,android 在第一个应用程序上不会有任何语言 开始,直到我进行交接。也许这与问题有关。
<service
android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
android:enabled="false"
android:exported="false">
<meta-data
android:name="autoStoreLocales"
android:value="false" />
</service>
有人有同样的经历吗?
答: 暂无答案
评论