Изменение ориентации экрана 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));
}
});
}