我在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
)?
答案 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;
}
}
});