Android用户界面显示选中的RadioButton,尽管它不是

Android用户界面显示选中的RadioButton,尽管它不是,android,radio-button,Android,Radio Button,在方向更改时重新创建UI时,我使用super.onCreate(savedInstanceState)和GetLastNonfigurationInstance()访问存储的自定义数据,以填充布局的动态部分 我有一个RadioGroup,它有两个单选按钮,并且已经在XML文件中定义。XML会自动选择第一个 当方向发生变化并且选择了第二个单选按钮时,一切似乎都正常工作;第二个单选按钮仍在UI中选择 但是RadioGroup.getCheckedRadioButtonId()表示第一个单选按钮被选中

在方向更改时重新创建UI时,我使用
super.onCreate(savedInstanceState)
GetLastNonfigurationInstance()
访问存储的自定义数据,以填充布局的动态部分

我有一个RadioGroup,它有两个单选按钮,并且已经在XML文件中定义。XML会自动选择第一个

当方向发生变化并且选择了第二个单选按钮时,一切似乎都正常工作;第二个单选按钮仍在UI中选择

但是
RadioGroup.getCheckedRadioButtonId()
表示第一个单选按钮被选中。我希望第一个被选中。但是当我调用
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");
如果我在UI中选择radioUseServing并更改方向,则日志会同时显示
true/false own/use checked
,尽管radioUseServing在UI中显示为选中

顺便说一句,logcat还输出

W/asset(4040): deep redirect failure from 0x0103003e => 0x02060007, defStyleAttr=0x0101007e, defStyleRes=0x0103001a, style=0x00000000

改变方向时,有时会多次。我还没有找到谷歌关于这意味着什么的任何信息。

我已经在IRC上与您进行了交谈,但我相信如果您获得视图,并向其发布一个runnable,它将调用.setChecked(),这实际上会导致setChecked调用在适当的时间发生,从而避免在视图层次结构准备就绪之前调用setChecked。 大概是这样的:

final View myRadioButton  = findViewById(R.id.myradiobutton); 
myRadioButton.post(
    new Runnable() {
        @Override
        public void run() { myRadioButton.setChecked(true); }
    }
);

我只是解决了这个问题,从RadioGroup中删除了两个单选按钮,创建了两个新的RB并添加了它们,这样xml中的RB就只是占位符了。这是可行的,但有点脏,不能解决根本问题。。。