获取Android中RadioGroup的索引

时间:2013-07-24 14:47:19

标签: java android radio-group

我在RadioGroup中有两个RadioButton:

<RadioGroup
    android:id="@+id/rgTripType"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="4" >

    <RadioButton
        android:id="@+id/rbOneWay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="One Way" />

    <RadioButton
        android:id="@+id/rbRound"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Round" />
</RadioGroup>

我在我的Java文件中将RadioGroup称为:

    final RadioGroup rgTypeOfTrip = (RadioGroup) findViewById(R.id.rgTripType);

        btnCalc.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                  Toast.makeText(MainActivity.this, CALL FUNCTION GETINDEX() to get value, Toast.LENGTH_SHORT).show();
        });

        rgTypeOfTrip.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // TODO Auto-generated method stub

                // Method 1
                int pos=rgTypeOfTrip.indexOfChild(findViewById(checkedId));
                    getIndex(pos);
                Toast.makeText(MainActivity.this, String.valueOf(pos), Toast.LENGTH_SHORT).show();
            }
        });

public int getIndex(int k) {
    return k;
}

它应该做的是显示一个Toast,其中包含无线电组内单选按钮的索引。相反,它会导致我的程序崩溃。知道怎么解决吗?

更新:索引问题已解决。

问题:如何在POS函数中使用索引值(btnClick)?

2 个答案:

答案 0 :(得分:2)

崩溃是因为pos是整数变化。如果你传递一个int值作为第二个参数,你要求android查找一个id为你提供的int的String。如果它不存在,则会抛出ResourcesNotFoundException

Toast.makeText(MainActivity.this, pos, Toast.LENGTH_SHORT).show();

 Toast.makeText(MainActivity.this, String.valueOf(pos), Toast.LENGTH_SHORT).show();

答案 1 :(得分:2)

有不同的方式..  我用这种方式

        RadioGroup radiogroup = (RadioGroup) findViewById(R.id.groupid);
    Button bt = (Button) findViewById(R.id.btnDisplay);

    bt.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // get selected radio button from radioGroup
            int selectedId = radiogroup.getCheckedRadioButtonId();
            switch (selectedId) {

                case R.id.radio_button1:
                 // do something..
                    break;
                case R.id.radio_button2:
                  // do something..
                    break;

            }


        }
    });