znl_12 于 2013.04.08 15:28 提问
- 如何动态的添加 Radiobutton ?
-
XML 文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:id="@+id/sl" > <RadioGroup android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:id="@+id/rgc"> </RadioGroup> </LinearLayout>
Java 文件:
LinearLayout l1; RadioGroup rg; RadioButton rb[]; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); l1=(LinearLayout)findViewById(R.id.sl); rg=(RadioGroup)findViewById(R.id.rgc); rb=new RadioButton[4]; for(int i=0;i<4;i++){ rb[i]=new RadioButton(this); rb[i].setLayoutParams(new LinearLayout.LayoutParams(60,30)); rb[i].setText(i+"aaaaaa"); rg.addView(rb[i]); } l1.addView(rg); }
我添加了Radiobutton,运行上面的代码后,出现异常:"this specified child already has a parent",代码有什么问题吗?
-
- usniyo 2013.04.08 17:16
- 已采纳
findViewById()
得到的是一个已经存在的view,你再把它放入其父view一次,自然会抛该view已存在的异常,除非你先把它从它父view中移除,但这不是你想要的吧?所以你得通过new RadioGroup(...)
新生成一个,再添加。就像你new RadioButton(...)
后再add一样。
-
- curie_87 2013.04.09 17:21
试试下面的代码好用吗:
RadioGroup rg=(RadioGroup)findViewById(R.id.rgc);
RadioButton rb;
for(int i=0;i<4;i++)
{
rb=new RadioButton(this);
rb.setText(i+"aaaaaa");
rg.addView(rb,i,new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
}
rg.invalidate();
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
- 其他相关推荐