我在Android Studio工作,我正在尝试获取所选单选按钮的ID,然后将ID存储在字符串中。这可能吗?
我尝试用.getId()替换下面的.getText()方法,但它不会让我将它存储为字符串:
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkedId)
{
RadioButton checkedRadioButton = (RadioButton) findViewById(checkedId);
String text = checkedRadioButton.getText().toString();
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}
});
答案 0 :(得分:0)
getId()
会返回int
- 与所有primitive types一样,没有toString()
(或任何其他)方法。这是因为,虽然所有对象都有toString()
方法,但原语不是对象 - 但幸运的是,Java为wrapper classes提供了 所有原始类型的对象。在int
的情况下,相应的包装类称为Integer
:
String text = (Integer)checkedRadioButton.getId().toString();
在这里,我们明确地将int
返回的getId()
投射到Integer
对象,然后在该对象上调用toString()
。
或者,您可以利用autoboxing让Java处理"包装"为你自动:
Integer id = checkedRadioButton.getId();
String text = id.toString();
请注意,getId()
仍然会返回int
,但是因为您将id
变量声明为Integer
,所以Java"框"自动返回其包装类的值 - 因此" autoboxing"。
您还可以使用静态Integer.toString()
方法:
String text = Integer.toString(checkedRadioButton.getId())
但请注意,在引擎盖下,此处正在执行相同的操作。
答案 1 :(得分:0)
除了@drewmore解决方案,你也可以使用
String text = String.valueOf(checkedRadioButton.getId());