横向方向无法正常工作

时间:2019-06-23 04:10:22

标签: java android

旋转设备时出现问题,重新执行活动并更改值,例如,假设您有一个带有按钮的活动,则单击此按钮时它将显示增加的文本视图(计数器)中的值。当您将设备置于横向模式时,该活动将再次运行,并且您将(再次)看到该值增加了。我的问题是,有没有办法在旋转设备时不再运行该活动?

4 个答案:

答案 0 :(得分:1)

请阅读this。您将看到有两种解决配置更改的解决方案:

  1. 您可以通过更新清单中的活动来声明您自己处理更改。这样,您的活动将不会重新开始,并且将调用onConfigurationChanged()

    <activity ...
        android:configChanges="orientation|screenSize"
        ...>
    
  2. 您可以通过onSaveInstanceState()函数将数据对象传递给新活动。传递大对象可能会使应用程序变慢。最好例如通过使用ViewModels从视图中分离数据,这些类型的更改中会保留这些数据。

第一种方法似乎很简单,但不建议这样做,因为您可以在开头提供的链接中看到它:

  

警告:自己处理配置更改可能会做很多事情   更难使用替代资源,因为系统确实   不会自动为您应用它们。这种技术应该是   当您必须避免由于   配置更改,不建议在大多数应用中使用。

答案 1 :(得分:0)

在活动中添加android:configChanges

<activity name= ".YourActivity" android:configChanges="orientation|screenSize"/>

答案 2 :(得分:0)

在清单文件中添加android:configChanges = "orientation|screenSize" 到活动标签。

例如:

<activity
android:name=".dummyActivity"
android:configChanges = "orientation|screenSize"/>

如果要手动处理方向更改,可以通过重写“活动”中的onConfigurationChanged()方法来实现。

有关更多信息,请参见Handling Configuration Changes

答案 3 :(得分:0)

将此添加到清单

android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"

如果configChanges包含uiMode,请将其删除。如果您不想卸载uiMode,则可以更新这些库。

androidx.appcompat:appcompat:1.2.0-rc01
androidx.core:core:1.3.2