Android 有没有办法让保留的片段知道屏幕方向何时改变了?

Android 有没有办法让保留的片段知道屏幕方向何时改变了?,android,android-fragments,fragment,Android,Android Fragments,Fragment,当屏幕方向改变时,我想在保留的片段中运行一些代码 我注意到这个问题的常见解决方案是 但是它在片段的初始设置中运行代码。我不想那样。我只希望在发生方向更改时运行代码 编辑:如果我使用onatach(),onActivityCreated(),或者onCreate(),这并不重要。我仍然有同样的问题,我解释过,因为它们是在片段的初始设置上运行的我相信您已经注意到,保留片段的生命周期是不同的onCreate 相反,您可以覆盖onAttach或onActivityCreated,并检查方向是否发生变化

当屏幕方向改变时,我想在保留的
片段中运行一些代码

我注意到这个问题的常见解决方案是

但是它在
片段的初始设置中运行代码。我不想那样。我只希望在发生方向更改时运行代码


编辑:如果我使用
onatach()
onActivityCreated()
,或者
onCreate()
,这并不重要。我仍然有同样的问题,我解释过,因为它们是在
片段的初始设置上运行的

我相信您已经注意到,保留片段的生命周期是不同的<旋转设备时,不会调用保留片段的code>onCreate

相反,您可以覆盖
onAttach
onActivityCreated
,并检查方向是否发生变化

以下是检测方向变化的示例:

private int currentOrientation = -1;

public void onActivityCreated (Bundle savedInstanceState) {
    int orientation = getResources().getConfiguration().orientation;
    if(currentOrientation == -1) {
        //first time here set orientation
        currentOrientation = orientation;
    } else if(currentOrientation != orientation) {
        // orientation changed, execute custom code.
    }
}

,只有
onCreate
onDestroy
将被忽略,因为片段未被创建或销毁。但是,始终会调用创建的活动上的
onStart
onAttach
。因此,您可以将该代码移到其中一个方法中。无论出于何种原因临时删除片段的事件中,跟踪之前的方向更改也很好(因为生命周期将被调用以从活动中分离)。

无论我使用的是onAttach、onActivityCreated还是onCreate。我仍然有同样的问题,我解释过,因为它们是在片段的初始设置上运行的。因此,在第一次使用当前方向创建片段时设置一个变量,并且只有在下次调用
onatach
onActivityCreated
时,如果方向不再匹配,才运行自定义代码。是的,只需将其设置为一些默认值,即它不能像
int orientation=Integer.MIN\u VALUE
。如果它等于这个值,那么你就知道之前从未设置过,这意味着用户还没有旋转设备。请参阅更新的答案。这仍然是你想要的<尤其是code>onCreate
将永远不会起作用,因为自从片段被保留以来,在第一次创建片段时只调用了一次。如果处理得当,其他方法也会起作用,我为您添加了一个示例。