android ViewSwitcher屏幕方向更改

android ViewSwitcher屏幕方向更改,android,android-orientation,viewswitcher,Android,Android Orientation,Viewswitcher,我有一个ViewSwitcher在一个片段活动中,有两个布局文件,每个方向一个。ViewSwitcher由无线电组控制 当我旋转屏幕时,一切都按照我的预期进行,正确的布局文件用于渲染屏幕 但是,当屏幕旋转时,将触发无线组的onCheckedChanged事件。在onCreate中创建的侦听器如下所示: 我怎样才能在屏幕旋转时在侦听器中调用viewSwitcher.showNext而不触发它呢?嗯,我找到了一个黑客解决方案,但我希望有一个更好的解决方案 private boolean wa

我有一个ViewSwitcher在一个片段活动中,有两个布局文件,每个方向一个。ViewSwitcher由无线电组控制

当我旋转屏幕时,一切都按照我的预期进行,正确的布局文件用于渲染屏幕

但是,当屏幕旋转时,将触发无线组的onCheckedChanged事件。在onCreate中创建的侦听器如下所示:


我怎样才能在屏幕旋转时在侦听器中调用viewSwitcher.showNext而不触发它呢?

嗯,我找到了一个黑客解决方案,但我希望有一个更好的解决方案

    private boolean wasRotatedHack;

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.savedInstanceState = savedInstanceState;
    if (savedInstanceState == null) {
        wasRotatedHack = false;
    } else {
        wasRotatedHack = true;
    }

    tabRadios.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int index) {

            if (!wasRotatedHack) {
                viewSwitcher.showNext();
            } else {
                wasRotatedHack = false;
            }
        }
    });

    startInspectionButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(getApplicationContext(), InspectionActivity.class));
        }
    });
  }

只是对它进行了更多的测试,当你关闭屏幕并重新打开时,它会变得一团糟。一定有更干净的方法。。。
    private boolean wasRotatedHack;

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.savedInstanceState = savedInstanceState;
    if (savedInstanceState == null) {
        wasRotatedHack = false;
    } else {
        wasRotatedHack = true;
    }

    tabRadios.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int index) {

            if (!wasRotatedHack) {
                viewSwitcher.showNext();
            } else {
                wasRotatedHack = false;
            }
        }
    });

    startInspectionButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(getApplicationContext(), InspectionActivity.class));
        }
    });
  }