【问题标题】:not able to get vaule from RadioButtons无法从单选按钮中获取价值
【发布时间】:2015-03-06 12:11:34
【问题描述】:

我正在尝试从 RadioButton 中获取由数组字符串创建的值 我正在使用 OClickListener() 从 RadioButton 获取值,但显示错误
" java.lang.ClassCastException: android.widget.Button 无法转换为 android.widget.RadioButton "

这是我的代码,请检查

for(int i =0; i<ab.length;i++)
{
RadioButton radioButtonView = new RadioButton(this);
radioButtonView.setText(ab[i]);
radioGroup.addView(radioButtonView, p);
}
       
Button btnDisplay = (Button) findViewById(R.id.button1);
btnDisplay.setOnClickListener(new OnClickListener() {

	@Override
	public void onClick(View v)
    {
	// TODO Auto-generated method stub
	// get selected radio button from radioGroup
	int selectedId = radioGroup.getCheckedRadioButtonId();
	// find the radiobutton by returned id
    String s = ((RadioButton) v ).getText().toString();
	Toast.makeText(Radio_Button.this, "This is: " + s,Toast.LENGTH_LONG).show();
  }

而 LogCat 是

   
 FATAL EXCEPTION: main
 Process: com.example.radiobuttondynamic, PID: 4741
 java.lang.ClassCastException: android.widget.Button cannot be cast to android.widget.RadioButton
 	at com.example.radiobuttondynamic.Radio_Button$1.onClick(Radio_Button.java:64)
 	at android.view.View.performClick(View.java:4438)
 	at android.view.View$PerformClick.run(View.java:18422)
 	at android.os.Handler.handleCallback(Handler.java:733)
 	at android.os.Handler.dispatchMessage(Handler.java:95)
 	at android.os.Looper.loop(Looper.java:136)
 	at android.app.ActivityThread.main(ActivityThread.java:5017)
 	at java.lang.reflect.Method.invokeNative(Native Method)
 	at java.lang.reflect.Method.invoke(Method.java:515)
 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
 	at dalvik.system.NativeStart.main(Native Method)

请提出改正建议

谢谢 谢谢

【问题讨论】:

  • 可以参考这个链接:stackoverflow.com/questions/18179124/…
  • 问题是您将 v 转换为单选按钮,但它实际上是一个按钮。将此用作示例代码。查看 radioButton = radioButtonGroup.findViewById(radioButtonID);如果您有任何疑问,请发表评论。
  • @Vivek cau 请告诉我这行代码在哪里写?
  • @Ashu,我发布了我的答案。请参考。

标签: java android


【解决方案1】:

vButton,您在这一行将其转换为 RadioButton

String s = ((RadioButton) v ).getText().toString();

试试这个:

如果您以编程方式添加了radioButton,您可以将setID 添加到radioButtons

for(int i =0; i<ab.length;i++)
{
RadioButton radioButtonView = new RadioButton(this);
radioButtonView.setText(ab[i]);
radioButtonView.setID(i);
radioGroup.addView(radioButtonView, p);
}

然后

 String s = ((RadioButton) findViewById(yourRadioButtonID) ).getText().toString();

【讨论】:

  • 我试过了,但没有用,请提出任何其他解决方案。寻找帮助
  • 什么是“Hamidreza Samadi”
【解决方案2】:

您为什么要尝试将按钮转换为单选按钮? 无论如何,如果您想获取所选单选按钮的文本,请执行以下操作

btnDisplay.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v)
{

  RadioButton selectedButton=   (RadioButton)findViewById(radioGroup.getCheckedRadioButtonId());  //you will get the selected radiobutton here

 String s=selectedButton..getText().toString();
 Toast.makeText(Radio_Button.this, "This is: " + s,Toast.LENGTH_LONG).show();

}

【讨论】:

  • 它不起作用,请您提出其他建议
  • 它没有显示任何错误。但它没有得到 RadioButton 的值
  • 很高兴它成功了!你发现错误是什么了吗?
  • 是的,这是我搞砸了,所以我从新的活动开始谢谢
【解决方案3】:

使用这个:

String s = radioButtonView.getText().toString();

代替:

String s = ((RadioButton) v ).getText().toString();

【讨论】:

    【解决方案4】:

    我正在编写 onclick 功能。

    public void onClick(View v)
     {
    
      int selectedId = radioGroup.getCheckedRadioButtonId();
        if(selectedId !=-1)
         {    
            View radioButton = radioGroup.findViewById(selectedId );
            int radioId = radioGroup.indexOfChild(radioButton);
            RadioButton btn = (RadioButton) radioGroup.getChildAt(radioId);
            String selection = (String) btn.getText();
        Toast.makeText(Radio_Button.this, "This is: " + s,Toast.LENGTH_LONG).show();
        }   
     }
    

    试试这个,如果你有任何问题,请评论。

    【讨论】:

    猜你喜欢
    • 2018-05-17
    • 2013-06-14
    • 2016-11-09
    • 2022-01-22
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2019-10-05
    相关资源
    最近更新 更多