android ViewSwitcher屏幕方向改变

时间:2012-06-21 07:00:38

标签: android android-orientation viewswitcher

我在ViewSwitche中有一个FragmentActivity r,包含2个布局文件,每个方向一个。 ViewSwitcherradio group控制。

当我旋转屏幕时,一切都像我期望的那样,正确的布局文件用于渲染屏幕。

但是,当屏幕旋转时会触发广播组的onCheckedChanged事件
该侦听器看起来像这样(在onCreate中创建):< / p>

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        //snip
        radios.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int index) {

            viewSwitcher.showNext();
        }
        });
 }

如何在listener中调用 viewSwitcher.showNext(),而不会在屏幕旋转时触发它?

1 个答案:

答案 0 :(得分:0)

好吧,我找到了一个hacky解决方案,但我希望那里有一个更好的解决方案。

    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));
        }
    });
  }