获取选定的单选按钮ID放置在导航视图中

时间:2016-03-22 07:26:15

标签: android radio-group drawerlayout navigationview

我在抽屉布局的导航视图中采用了无线电组,如下所示

 <android.support.design.widget.NavigationView
     app:headerLayout="@layout/header"
     app:menu="@menu/drawer">

 <RadioGroup>
      <RadioButton/>
      <RadioButton/>
 </RadioGroup>

     </android.support.design.widget.NavigationView>

我想获取所选的单选按钮文本或ID但我没有得到任何日志或Toast也没有错误..

获取所选单选按钮的代码:

rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
         @Override
         public void onCheckedChanged(RadioGroup group, int checkedId) {
            int pos=rg.indexOfChild(findViewById(checkedId));
             Toast.makeText(MainActivity.this, "ID = "+String.valueOf(pos),
                     Toast.LENGTH_SHORT).show();
             Log.e("",""+pos);
         } 

我知道我可以通过使用自定义列表视图来实现这一点..但是如何使这个工作..

2 个答案:

答案 0 :(得分:0)

抱歉无法回答评论。试试这个:

navigationView.getMenu().findItem(R.id.radioButtonId);

这将返回RadioButton的ID。

编辑:

你能做这样的事吗:

RadioButton radio = (RadioButton)navigationView.findViewById(R.id.radioButtonId);

答案 1 :(得分:0)

示例 - 就像在developer.android

中提供的那样

您只需在xml文件中添加属性onClick,如下所示

<?xml version="1.0" encoding="utf-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <RadioButton android:id="@+id/radio_pirates"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/pirates"
        android:onClick="onRadioButtonClicked"/>
    <RadioButton android:id="@+id/radio_ninjas"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ninjas"
        android:onClick="onRadioButtonClicked"/>
</RadioGroup>

处理代码部分中的onClick事件

 public void onRadioButtonClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();

    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.radio_pirates:
            if (checked)
                // Pirates are the best
            break;
        case R.id.radio_ninjas:
            if (checked)
                // Ninjas rule
            break;
    }
}