在哪里检查android片段中的方向更改

iro*_*xxx 14 android android-fragments

在我的应用程序中,除了一个特定的模式外,我在纵向模式下FragmentActivity有多个.我之间移动通过尾小号S IN的.FragmentFragmentFragmentViewFragmentActivity

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

我已经保存了所需的所有数据,但我最好onSavedInstanceState()Fragment哪里测试方向更改,以便我可以View适当地恢复?

不知道我可以覆盖onConfigurationChange(),并在我的测试有Fragment,因为我不具备的机器人:configChanges ="方向"在我的Android Manifest.

Vik*_*pta 31

将此签入保留在onCreate()上.当您旋转设备时,应用程序将重新启动.因此,当应用重启时,会再次调用onCreate.

int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
   // Landscape
}
else {
   // Portrait  
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以为纵向和横向视图创建单独的xmls.在"res"文件夹中创建一个名为"layout-land"的文件夹,并为该文件夹中的横向视图创建一个xml.保持xmls(纵向和横向)的名称相同.您的观点将自动调整.确保每个xml中的所有小部件都保持不变(只需将在任一视图中不需要的小部件的可见性更改为"GONE"). (4认同)
  • 我很高兴:)很高兴它帮助了你. (2认同)

ACe*_*giz 16

您也可以通过覆盖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 !!!");
       }
   }
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,它不被称为 (3认同)