如何在片段中将方向更改为横向,但返回 activity 时从传感器读取?

How to change orientation to Landscape in a fragment, but read from sensor when back to activity?

我从 activity 开始一个片段,这是我想要将方向更改为横向的时候,但是一旦应用程序返回到 activity,我希望方向变为取决于传感器。到目前为止,我在我的片段中是这样做的:

getActivity().setRequestedOrientation(
                ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

但是当我回到 activity 时,屏幕仍然是横向的,但是当我回到 activity 时,我希望屏幕方向是相关的在传感器上。

最好的方法是在您要返回 activity 的地方使用此代码。因为它会将方向转移到用户为其设备设置的方向。

yourActivityReference.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);

如果您不想使用它,那么您可以使用

yourActivityReference.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

您在 fragment 中实际做的是设置包含它的 ActivityorientationgetActivity()...。因此,您需要做的是在片段与 activity 分离后重置 activity 的方向。例如,您可以覆盖片段的 onDetach() 并调用:

getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

那里。或者您可以尝试重写片段中的各种方法,看看哪种方法最适合您。