我想从相同的xml资源创建多个按钮为此我正在创建am xml布局,其中我在xml文件中定义按钮
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/inputbox"
style="@style/textstyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/inputbox"
android:text="B" />
</LinearLayout>
然后在代码中创建多个按钮使用按钮,我在xml中定义代码就像这样
View view = inputboxview.findViewById(R.id.inputbox);
((ViewGroup) view.getParent()).removeView(view);
//Add input boxes in control view
for(int i=0; i<guess_world.length(); i++)
{
Button inputbox = new Button(context);
//Drawable image = context.getResources().getDrawable(R.drawable.inputbox);
//inputbox.setBackgroundDrawable(image);
//inputbox.set
inputbox = (Button) view;
inputbar.addView(inputbox);
}
现在的问题是,当我创建一个单独时它工作正常但是当我创建多个按钮时它给我例外
java.lang.RuntimeException:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
所以,拜托我吧。
答案 0 :(得分:0)
错误是正常的,正如所说,每个视图只能添加一次。
将您的按钮XML移动到单独的文件中,并inflate it并将其添加到for循环内的LinearLayout。
答案 1 :(得分:0)
我们无法猜测你的“输入栏”对象是什么,所以我们不知道你在哪里添加视图。
你能做的就是这个,假设你的容器有id = @ + id / container并且是一个LinearLayout:
LinearLayout container = (LinearLayout) findViewById(R.id.container);
for(int i=0; i<guess_world.length(); i++)
{
Button inputbox = new Button(context); //or inflate from xml
inputbox.setId(i);
// TODO: set width and height using LayoutParameters
container.addView(inputbox);
}