Android RadioGroup在onCheckedChanged中没有响应
我有以下代码:Android RadioGroup在onCheckedChanged中没有响应,android,radio-group,Android,Radio Group,我有以下代码: private void inflateCustomView() { LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View customNav = inflater.inflate(R.layout.custom_view, null); //Bind to its state change Ra
private void inflateCustomView()
{
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View customNav = inflater.inflate(R.layout.custom_view, null);
//Bind to its state change
RadioGroup radioGrp = ((RadioGroup)customNav.findViewById(R.id.radio_nav));
radioGrp.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
{
switch(checkedId)
{
case R.id.moneyRadioBtn:
isInCashMode = true;
break;
case R.id.unitRadioBtn:
isInCashMode = false;
break;
}
setCashOrUnits(isInCashMode);
}
});
//Attach to the action bar
getSupportActionBar().setCustomView(customNav);
getSupportActionBar().setDisplayShowCustomEnabled(true);
}
似乎已正确添加自定义视图,但从未调用onCheckedChanged。我尝试在onCheckedChanged中插入断点,但从未达到。我做错了什么
编辑:
下面是自定义视图的XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="left|center_vertical"
android:orientation="horizontal"
>
<RadioGroup
android:id="@+id/radio_nav"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<RadioButton
android:id="@+id/moneyRadioBtn"
android:text="Kr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
/>
<RadioButton
android:id="@+id/unitRadioBtn"
android:text="Enheder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
/>
</RadioGroup>
</LinearLayout>
检查以下代码
RadioGroup radioGrp = ((RadioGroup)customNav.findViewById(R.id.radio_nav));
int checkedRadioButtonID = radioGrp.getCheckedRadioButtonId();
radioGrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
{
switch(checkedId)
{
case R.id.moneyRadioBtn:
isInCashMode = true;
break;
case R.id.unitRadioBtn:
isInCashMode = false;
break;
}
setCashOrUnits(isInCashMode);
}
});
注意
radioGrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
希望,这有帮助。您也可以这样检查
radioGrp.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup arg0, int arg1) {
RadioButton radioButton = (RadioButton) findViewById(radioGroup
.getCheckedRadioButtonId());
if (radioButton.getText().equals("radiobutton name")) {
isInCashMode = true;
} else {
isInCashMode = false;
}
}
});
试试看。它可能会对您有所帮助。您可能应该将其粘贴到XML布局中,有时可能会出现一些问题,使广播组无法选择其中的按钮 我已经有一段时间没有与他们合作了,但我相信XML中的按钮必须直接位于XML中父RadioGroup的下面,因此,例如,如果您在RadioGroup中的LinearLayout中有一个RadioButton,RadioGroup将不会拾取按钮,因为它不是直接的子项 编辑:另一种方法是获取代码中每个单选按钮的引用,定义一个CompoundButton.OnCheckedChangeListener来处理事件,然后调用
myRadioButton.setOnCheckedChangeListener(myOnCheckChangeListener);
对他们每个人来说。有点笨拙(您必须在onCheckedChanged()方法中手动获取选中视图的id),但它可以工作 我今天遇到了这个问题,看起来很荒谬: 它需要CheckBox.OnCheckedChangeListener。RadioGroup公然拒绝接受RadioGroup.OnCheckedChangeListener,但使用复选框one可以正常工作
我甚至不知道发生了什么,但它是这样工作的。几乎没有。您确定您正在使用RadioGroup.OnCheckedChangeListener。请使用新的RadioGroup.OnCheckedChangeListener()而不是仅使用新的OnCheckedChangeListener()。我看到有人在这里有同样的问题:我尝试了这个,但什么都没有。也许是因为我不理解团队和听众的复杂性。布局膨胀和无法设置膨胀视图的侦听器可能是一个问题吗?或者是ActionBar覆盖了对它的“点击”吗?你可能想把这变成它自己的问题。你的XML肯定有问题