Изменение ориентации экрана Android ViewSwitcher

У меня есть ViewSwitcheг в FragmentActivity с в 2 файла макета, по одному для каждой ориентации. ViewSwitcher контролируется radio group,

Когда я поворачиваю экран, все ведет себя так, как я ожидал, для отображения экрана используется правильный файл макета.

Тем не менее, радио группы onCheckedChanged Событие запускается при повороте экрана.
Слушатель для этого выглядит так (создан в onCreate):

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

            viewSwitcher.showNext();
        }
        });
 }

Как я могу вызвать viewSwitcher.showNext() в listener не сгорая при повороте экрана?

1 ответ

Ну, я нашел хакерское решение, но надеюсь, что есть лучшее.

    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));
        }
    });
  }
Другие вопросы по тегам