3

对于我的应用程序,我必须使用复选框和文本视图动态创建许多水平线性布局。目前我在 for 循环中动态创建这些。为了性能和易用性,我认为使用 layoutinflater 会是一种更好的方法,因此使用正确的格式定义一个水平线性布局,然后将它们添加到某种循环中,但是我遇到了麻烦。我也愿意接受是否有更好的方法来实现我所追求的(或者如果我目前的方法确实对性能更好等)

//my main layout
LinearLayout main = (LinearLayout) findViewById(R.id.main);
LayoutInflater inflate = getLayoutInflater();
//inflating the layout containing the horizontal
LinearLayout l = (LinearLayout) inflate.inflate(R.layout.inflater, main, false);
//adding the view
main.addView(l);

问题是我不能把它放在任何类型的 for 循环中。以下是重复 addView 命令的错误日志。

12-24 19:37:18.668: E/AndroidRuntime(8780): java.lang.RuntimeException: Unable
to start activity ComponentInfo{com.example.test1/com.example.test1.MainActivity}: 
java.lang.IllegalStateException: The specified child already has a 
parent. You must call removeView() on the child's parent first.

我还考虑将布局添加到主线性布局,然后获取并复制它,然后添加更多。你们能帮我学习如何做到这一点吗?

非常感谢你!

4

1 回答 1

5
LinearLayout l = (LinearLayout) inflate.inflate(R.layout.inflater, main, false);

我怀疑问题是您指定mainViewGroup参数。

尝试设置attachToRoot参数,true然后删除该main.addView(l)行。

或者将ViewGroup参数设置为null并保留该main.addView(l)行。

于 2012-12-24T19:57:46.450 回答