0

我在 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

4

2 回答 2

2

它崩溃是因为 pos 是一个整数变化。如果您将 int 值作为第二个参数传递,则您要求 android 查找带有您提供的 int 的 id 的字符串。如果它不存在, ResourcesNotFoundException将被抛出

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

 Toast.makeText(MainActivity.this, String.valueOf(pos), Toast.LENGTH_SHORT).show();
于 2013-07-24T14:49:54.380 回答
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;

            }


        }
    });
于 2017-02-20T11:12:36.013 回答