getActivity / MultiLanguages

Android 多语种适配框架,兼容高版本,适配第三方库语种
Apache License 2.0
982 stars 123 forks source link

[Bug]:在系统设置中切换语言无效 #41

Closed xyj155 closed 5 months ago

xyj155 commented 8 months ago

框架版本【必填】

9.3

问题描述【必填】

我在切换语言的时候,app的语言还是默认的语言,无法切换到其他的语言

复现步骤【必填】

点击语言列表,切换以后重新进入app,语言未改变

是否必现【必填】

项目 targetSdkVersion【必填】

34

出现问题的手机信息【必填】

小米10

出现问题的安卓版本【必填】

13

问题信息的来源渠道【必填】

自己遇到的

是部分机型还是所有机型都会出现【必答】

小米手机

框架最新的版本是否存在这个问题【必答】

框架文档是否提及了该问题【必答】

是否已经查阅框架文档但还未能解决的【必答】

issue 列表中是否有人曾提过类似的问题【必答】

是否已经搜索过了 issue 列表但还未能解决的【必答】

是否可以通过 Demo 来复现该问题【必答】

提供报错堆栈

No response

提供截图或视频

No response

提供解决方案

No response

getActivity commented 8 months ago

小伙子,你是适配了 Android 13 locales_config.xml 特性对吧?

getActivity commented 8 months ago

issues/37

getActivity commented 8 months ago

解决方案不使用这一特性,具体的原因上面的 issue 有介绍

xyj155 commented 8 months ago

这个我不知道诶,我不知道是不是系统默认配置的。我现在一直是默认语言,哪怕切换了系统的语言都无效了

---Original--- From: @.> Date: Sat, Feb 17, 2024 12:13 PM To: @.>; Cc: @.**@.>; Subject: Re: [getActivity/MultiLanguages] [Bug]: (Issue #41)

小伙子,你是适配了 Android 13 locales_config.xml 特性对吧?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

getActivity commented 8 months ago

那你的问题应该是切换系统语种,但是切换到 App 语言没有任何变化对吧?

xyj155 commented 8 months ago

对的,我没有用到这个属性

---原始邮件--- 发件人: @.> 发送时间: 2024年2月17日(周六) 中午12:17 收件人: @.>; 抄送: @.**@.>; 主题: Re: [getActivity/MultiLanguages] [Bug]:在系统设置中切换语言无效 (Issue #41)

那你的问题应该是切换系统语种,但是切换到 App 语言没有任何变化对吧?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

getActivity commented 8 months ago
image
xyj155 commented 8 months ago

还是没有效果

---原始邮件--- 发件人: @.> 发送时间: 2024年2月17日(周六) 中午12:23 收件人: @.>; 抄送: @.**@.>; 主题: Re: [getActivity/MultiLanguages] [Bug]:在系统设置中切换语言无效 (Issue #41)

image.png (view on web) — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

getActivity commented 8 months ago

你当前设置的语言是什么?跟随系统?还是某个特定语种?

xyj155 commented 8 months ago

是APP里面设置好的语言,跟随用户设置

---原始邮件--- 发件人: @.> 发送时间: 2024年2月17日(周六) 中午12:32 收件人: @.>; 抄送: @.**@.>; 主题: Re: [getActivity/MultiLanguages] [Bug]:在系统设置中切换语言无效 (Issue #41)

你当前设置的语言是什么?跟随系统?还是某个特定语种?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

getActivity commented 8 months ago

https://github.com/getActivity/MultiLanguages/assets/28616817/314cb964-5eda-4ecf-a5bc-9632b7336ef9

getActivity commented 8 months ago
image
getActivity commented 8 months ago

小伙子,我经过验证,是可行的。

xyj155 commented 8 months ago

找到问题了,还需要在baseactivity里面再配置onConfigurationChanged,否则就无效

getActivity commented 8 months ago

@xyj155 小伙子,我测试了,只要你在监听到系统语种的时候,手动调用每个 activity.recreate 方法,那么无论这个 Activity 在 AndroidManifest.xmlandroid:configChanges 的属性值是多少,都会重新创建界面,你之所以没有生效没有按照我的意思去做,也就是没有去调用 activity.recreate 方法。

xyj155 commented 8 months ago

Recreate我做了,也不行,不过感谢大佬教我

---原始邮件--- 发件人: @.> 发送时间: 2024年2月17日(周六) 晚上8:55 收件人: @.>; 抄送: @.**@.>; 主题: Re: [getActivity/MultiLanguages] [Bug]:在系统设置中切换语言无效 (Issue #41)

@xyj155 小伙子,我测试了,只要你在监听到系统语种的时候,手动调用每个 activity.recreate 方法,那么无论这个 Activity 在 AndroidManifest.xml 在 android:configChanges 的属性值是多少,都会重新创建界面,你之所以没有生效没有按照我的意思去做,也就是没有去调用 activity.recreate 方法。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

getActivity commented 8 months ago

@xyj155 那为什么不行呢?是哪种情况?

  1. 写了调用 recreate 代码,但是实际上没有调用到
  2. 调用了 recreate 方法,但是 activity 实际没有重启
  3. 调用了 recreate 方法,activity 也重启了,但是界面仍然用的是旧语种构建的
xyj155 commented 8 months ago

我目前加上了加载配置以后就好了,估计就是语言配置没有加载进去

---原始邮件--- 发件人: @.> 发送时间: 2024年2月17日(周六) 晚上9:06 收件人: @.>; 抄送: @.**@.>; 主题: Re: [getActivity/MultiLanguages] [Bug]:在系统设置中切换语言无效 (Issue #41)

@xyj155 那为什么不行呢?是哪种情况?

写了调用 recreate 代码,但是实际上没有调用到

调用了 recreate 方法,但是 activity 实际没有重启

调用了 recreate 方法,activity 也重启了,但是界面仍然用的是旧语种构建的

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

getActivity commented 8 months ago

@xyj155 小伙子,知道你在干啥么?我问你 A,你却回答我 B

xyj155 commented 8 months ago

大哥,我错了,但是你这个方法我用过,不生效啊

---原始邮件--- 发件人: @.> 发送时间: 2024年2月17日(周六) 晚上9:54 收件人: @.>; 抄送: @.**@.>; 主题: Re: [getActivity/MultiLanguages] [Bug]:在系统设置中切换语言无效 (Issue #41)

@xyj155 小伙子,知道你在干啥么?我问你 A,你却回答我 B

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

getActivity commented 8 months ago

大哥,我错了,但是你这个方法我用过,不生效啊 ---原始邮件--- 发件人: @.> 发送时间: 2024年2月17日(周六) 晚上9:54 收件人: @.>; 抄送: @.**@.>; 主题: Re: [getActivity/MultiLanguages] [Bug]:在系统设置中切换语言无效 (Issue #41) @xyj155 小伙子,知道你在干啥么?我问你 A,你却回答我 B — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

@xyj155 小伙子,你这句话之前说过了,但是我现在很想知道为什么我的方法没有生效,过程是什么出现了问题?

xyj155 commented 8 months ago

我打印了一下日志,你那个recreate只是重新加载了配置,简单刷新一下页面,但是实际上,资源文件没有读进去

---原始邮件--- 发件人: @.> 发送时间: 2024年2月17日(周六) 晚上10:35 收件人: @.>; 抄送: @.**@.>; 主题: Re: [getActivity/MultiLanguages] [Bug]:在系统设置中切换语言无效 (Issue #41)

大哥,我错了,但是你这个方法我用过,不生效啊 … ---原始邮件--- 发件人: @.> 发送时间: 2024年2月17日(周六) 晚上9:54 收件人: @.>; 抄送: @.@.>; 主题: Re: [getActivity/MultiLanguages] [Bug]:在系统设置中切换语言无效 (Issue #41) @xyj155 小伙子,知道你在干啥么?我问你 A,你却回答我 B — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

@xyj155 小伙子,你这句话之前说过了,但是我现在很想知道为什么我的方法没有生效,过程是什么出现了问题?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

getActivity commented 8 months ago

@xyj155 不会吧?调用 recreate 方法不是会重新走 Activity 生命周期?你的布局文件在 onCreate 方法中加载的,理所应当布局也会重新加载的。

xyj155 commented 8 months ago

我是安卓34,按你的道理是会重新加载,但是他实际上不会

---原始邮件--- 发件人: @.> 发送时间: 2024年2月18日(周日) 中午11:19 收件人: @.>; 抄送: @.**@.>; 主题: Re: [getActivity/MultiLanguages] [Bug]:在系统设置中切换语言无效 (Issue #41)

@xyj155 不会吧?调用 recreate 方法不是会重新走 Activity 生命周期?你的布局文件在 onCreate 方法中加载的,理所应当布局也会重新加载的。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

getActivity commented 8 months ago

@xyj155 为什么不会呢?原因是什么?小伙子我手头不能复现这个问题,你给看看是什么原因导致的?

xyj155 commented 8 months ago

我加你微信吧,这样子沟通效率太低了

---原始邮件--- 发件人: @.> 发送时间: 2024年2月18日(周日) 中午11:53 收件人: @.>; 抄送: @.**@.>; 主题: Re: [getActivity/MultiLanguages] [Bug]:在系统设置中切换语言无效 (Issue #41)

@xyj155 为什么不会呢?原因是什么?小伙子我手头不能复现这个问题,你给看看是什么原因导致的?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

buhuiming commented 7 months ago

解决了吗

getActivity commented 7 months ago

@buhuiming 没有,小伙子你可以继续在这个 issue 下讨论,我依然会解答你的问题

LinX1874 commented 7 months ago

你好.请教一下 2调用了 recreate 方法,但是 activity 实际没有重启. 这是为啥 我直接调用actvitiy.recreate()或者 contextCompat.ecreate()都没办法让activity 重启 所有手机都这样,包括模拟器

getActivity commented 7 months ago

@LinX1874 小伙子,我这边没有办法复现,麻烦提供一个可供复现的 Demo 工程给我。

LinX1874 commented 7 months ago

@LinX1874 小伙子,我这边没有办法复现,麻烦提供一个可供复现的 Demo 工程给我。

感谢回复,我找到原因.已经解决了

getActivity commented 6 months ago

@LinX1874 小伙子,劳烦在这里说一下是怎么解决的,方便后面的人知道处理这个问题。

LinX1874 commented 6 months ago

@LinX1874 小伙子,劳烦在这里说一下是怎么解决的,方便后面的人知道处理这个问题。

ok,我的问题和本issue的标题无关 1. 背景:我在切换语言后调用activity的recreate无效. 原因:我的activityStack管理类中,有bug. 具体为退栈时多调用了一次finish(). 导致recreate方法 在在重建activity时候被关闭了

2. 背景:我用反射获取string,然后在recyclerView中展示.偶现取到的string是默认语言而不是设置的语言.(ps:仅recyclerview中的元素错误,同一个页面的其他控件正常(非反射获取)) 原因:待验证,非必现,疑似我用的context是从adapter中取得的关系 处理:我目前使用MultiLanguages.attach(context) 处理这个反射获取string的过程. 由于是非必现的也无法证实是否起作用.只是目前基本不出现了