gpt4 book ai didi

java - Activity 方向改变错误

转载 作者:行者123 更新时间:2023-11-29 02:25:52 25 4
gpt4 key购买 nike

我遇到了一个以前在 Android 应用程序中从未见过的奇怪错误。当从一个锁定在纵向模式的 Activity 导航到一个锁定在横向模式的 Activity 并返回时,本应处于纵向模式的 Activity 会出现在纵向模式,然后转到横向,然后再返回纵向。

当设备平放在 table 上且没有实际方向变化时会发生这种情况。我正在使用两个单独的 Activity ,这是我在项目中拥有的唯一代码。

Here是错误的视频,here's a link到重现此错误的确切项目。它发生在不止一台设备上,因此它不会与我的设备隔离。

问题:

  • 您知道是什么原因造成的吗?
  • 对于解决此问题,您有什么可以推荐的吗?

我尝试过的事情:

  • 以编程方式设置方向
  • 谷歌搜索但没有找到任何东西

更新 1

我尝试过的更多东西:

  • 将纵向 Activity 设置为“nosensor”,将横向 Activity 设置为“landscape”
  • 将纵向 Activity 设置为“nosensor”并在 onCreate 中以编程方式设置横向 Activity

更新 2

我一直在处理上面链接的项目,只是做了一些覆盖以注销正在发生的一切。我发现,当调用 onConfigurationChanged 时,它会在横向和纵向方向之间产生轻微的 Swing 。不做 Swing 的后退导航的输出是:

D/class com.mdk_studio.orientationbugtests.MainActivity: onStateNotSaved
D/class com.mdk_studio.orientationbugtests.MainActivity: onRestart
D/class com.mdk_studio.orientationbugtests.MainActivity: onWindowFocusChanged

shimmy 错误的输出是:

D/class com.mdk_studio.orientationbugtests.MainActivity: onStateNotSaved
D/class com.mdk_studio.orientationbugtests.MainActivity: onRestart
D/class com.mdk_studio.orientationbugtests.MainActivity: onWindowFocusChanged
D/class com.mdk_studio.orientationbugtests.MainActivity: onConfigurationChanged
D/class com.mdk_studio.orientationbugtests.MainActivity: onConfigurationChanged

我想现在的问题是,如何确保不会调用方向更改?

最佳答案

在测试 list 级别方向设置和程序化方向设置的所有不同组合之后。我发现要使 onConfigurationChanged 函数中的方向正确,您必须在实际开始导航之前设置方向。

对我有用并完全消除这种行为的组合是将我想要纵向显示的 list 中的 Activity 设置为“nosensor”。然后将我想要的横向 Activity 设置为横向使用

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

并在 onBackPressed 导航发生之前将方向设置回纵向。这部分很重要,一旦触发导航然后设置方向,在某些情况下,当 newConfiguration 在 onConfigurationChanged 调用中通过时,它的方向错误,然后它以某种方式发出另一个调用来纠正它在第一次通话时得到更新。

tl;dr将您想要的纵向 Activity 的方向设置为“nosensor”。在 onCreate 中以编程方式将方向设置为横向。在 onBackPressed 中将方向设置回纵向,在 super 调用之前

关于java - Activity 方向改变错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52259071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com