多个按钮使用相同的xml布局文件

时间:2013-10-01 13:47:07

标签: java android xml android-view

我想从相同的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.

所以,拜托我吧。

2 个答案:

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