20

在我的应用程序中,FragmentActivity除了Fragment一个特定的Fragment. 我在Fragments 中通过页脚Views 在s 之间移动FragmentActivity

当方向发生变化时,我有一个不同的布局(实际上具有相同的名称但不同View的小部件) 。Fragment在横向模式下,我想从Fragment布局View和页脚View中删除特定的小部件FragmentActivity,当返回纵向模式时,将所有内容添加回来。

我已经在 s 中保存了我需要的所有数据,但是我应该onSavedInstanceState()Fragment哪里最好地测试方向变化,以便我可以View适当地恢复 s?

不确定我是否可以在其中覆盖onConfigurationChange()和测试,因为我Fragment的 android 中没有android:configChanges="orientation"Manifest

4

2 回答 2

38

将此检查保留在 onCreate() 中。当您旋转设备时,应用程序会重新启动。因此,当应用重新启动时,会再次调用 onCreate。

int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
   // Landscape
}
else {
   // Portrait  
}
于 2012-12-14T11:10:56.377 回答
19

您也可以通过覆盖onConfigurationChanged片段的功能来控制方向变化。

    @Override
    public void onConfigurationChanged(Configuration newConfig) {

        super.onConfigurationChanged(newConfig);
        int currentOrientation = getResources().getConfiguration().orientation;

        if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE){
           Log.v("TAG","Landscape !!!");
        }
        else { 
           Log.v("TAG","Portrait !!!");
       }
   }
于 2015-01-16T08:59:13.683 回答