Когда мой пользовательский интерфейс воссоздается при смене ориентации, я использую super.onCreate(savedInstanceState)
и getLastNonConfigurationInstance()
для доступа к пользовательским данным, которые я сохранил, чтобы заполнить динамические части моего макета.
У меня есть RadioGroup, которая имеет две кнопки RadioButton и уже определена в файле XML. XML автоматически делает первый выбранным.
Когда происходит изменение ориентации и выбрана ВТОРАЯ радиокнопка, кажется, все работает нормально; вторая кнопка RadioB все еще выбрана в интерфейсе пользователя.
Но RadioGroup.getCheckedRadioButtonId()
говорит, что выбран первый RadioButton. И я на самом деле ХОЧУ выбрать первым. Но ничего не меняется, когда я вызываю rb1.setChecked(true)
- второй по-прежнему отображается как выбранный, и все же RadioGroup сообщает мне, что первый выбран (теперь это имеет смысл, но не отображается).
Это ДЕЙСТВИТЕЛЬНО странное поведение, у кого-нибудь есть советы?
(изменить)
Части моего кода:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.itemselected);
(...)
radioGroupServingType = (RadioGroup) findViewById(R.id.radioGroupServingType);
(...)
RadioButton radioOwnServing = (RadioButton) findViewById(R.id.radioOwnServing);
RadioButton radioUseServing = (RadioButton) findViewById(R.id.radioUseServing);
radioOwnServing.setOnClickListener(this);
radioUseServing.setOnClickListener(this);
//FIXME WTF
Log.d("", radioOwnServing.isChecked()+"/"+radioUseServing.isChecked()+" own/use checked");
radioOwnServing.setChecked(true);
Log.d("", radioOwnServing.isChecked()+"/"+radioUseServing.isChecked()+" own/use checked");
Если я выбираю radioUseServing в пользовательском интерфейсе и меняю ориентацию, журнал сообщает true/false own/use checked
оба раза - хотя radioUseServing отображается так, как выбранный в пользовательском интерфейсе.
Кстати, logcat также выводит
W/asset(4040): deep redirect failure from 0x0103003e => 0x02060007, defStyleAttr=0x0101007e, defStyleRes=0x0103001a, style=0x00000000
при смене ориентации, иногда несколько раз. Я ничего не нашел в Google о том, что это значит.