Android:如果方向是锁定的,还可以检测屏幕方向的变化

Android:如果方向是锁定的,还可以检测屏幕方向的变化,android,landscape-portrait,Android,Landscape Portrait,我有一个带有一个活动的Android应用程序和一个带有多个片段的自定义ViewPager。我的整个活动都锁定在纵向中,但现在我需要在特定片段中检测设备何时处于横向中,并启动另一个锁定在横向中的活动。在这个新活动中,当用户将设备放入纵向时,我将关闭它并返回纵向活动。 这是AndroidManifest.xml代码: <activity android:name="com.mypackage.MainActivity" android:configChange

我有一个带有一个活动的Android应用程序和一个带有多个片段的自定义ViewPager。我的整个活动都锁定在纵向中,但现在我需要在特定片段中检测设备何时处于横向中,并启动另一个锁定在横向中的活动。在这个新活动中,当用户将设备放入纵向时,我将关闭它并返回纵向活动。 这是AndroidManifest.xml代码:

 <activity
        android:name="com.mypackage.MainActivity"
        android:configChanges="orientation"
        android:label="@string/app_name"
        android:launchMode="singleTask"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.AppCompat.Light" >
    </activity>
现在我注意到,onConfigurationChanges从未使用此清单配置调用,但仅当我删除时才会调用

android:screenOrientation="portrait"
有没有一种方法可以将主要活动锁定在纵向,并拦截横向

现在我注意到OnConfiguration Changes()从未被调用

为什么这让你如此惊讶?您明确地禁用了方向更改,所以调用此方法没有意义。请注意,方向指的是屏幕方向,而不是设备的方向

当设备处于横向时,启动另一个锁定在横向的活动

您要么吃蛋糕,要么保留蛋糕,这样您要么强制执行固定方向,要么调用
onConfigurationChanges()

启动另一个已锁定的活动


为什么不为同一活动单独设置布局文件?切换将由框架自动处理,因此不需要特殊代码-只需将文件保存在正确命名的文件夹中(请参阅文档:)

因为我的活动中有一个ViewPager,它只用于纵向工作,因为我只需要在用户处于某个特定片段时切换纵向,所以看起来您的设计不正确,这样的ViewPager应该只在纵向中使用。但它不需要知道方向,因为这不应该是它的任务
android:screenOrientation="portrait"