【问题标题】:Stop android activity from being destroyed on locale change阻止 android 活动在语言环境更改时被破坏
【发布时间】:2016-01-20 12:54:31
【问题描述】:

我有一个可以自行处理语言环境更改的 Android 应用。 当我离开应用程序并更改语言环境时,调用“Application->onConfigurationChanged”(不是 Activity->onConfigurationChanged),当我恢复应用程序时,Activity 被销毁并重新启动。

我已经将android:configChanges="orientation|keyboardHidden|screenSize|locale" 放在清单的活动部分。

在更改区域设置后,如何阻止我的活动在恢复时重新创建?

【问题讨论】:

  • 您是在 onResume 上创建它吗?当您更改语言环境时,您的 onResume 将被调用,因此如果您这样做,则从 onresume 中删除代码并将其放置到 onCreate !!

标签: java android android-activity locale


【解决方案1】:

Android 中对配置更改的默认反应 就是破坏活动。为了避免这种情况发生 语言环境更改,我们进行了“语言环境”配置更改 然而,在默认的 AndroidManifest.xml 中注册, 您还需要注册您正在处理 layoutDirection 改变,否则 Android 不会 调用 onConfigurationChange() 进行语言更改,但是 而是拆除活动。

添加 android:configChanges="layoutDirection|locale" 可防止 Activity 在恢复时被销毁。

Source

【讨论】:

  • 这就是答案!非常感谢,想知道同样的事情。
  • 谢谢,没有你我可能会浪费几个小时!
  • 天哪,感谢您的回答。我也被这个困住了。添加“layoutDirection|locale”就可以了
  • 你是对的;添加 layoutDirection 有帮助;语言环境本身是不够的。恕我直言,这是 Android API 的缺陷...
【解决方案2】:

您可以将其添加到 mainfest 文件中的活动中, android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    相关资源
    最近更新 更多