如果运行一次(n = 1),则下面的循环有效,但是多次执行时(n> 1)。
IllegalStateException:指定的子级已有父级。您必须首先在孩子的父母上调用removeView()。 at line" containerLL.addView(divider);"
使用" new"创建了其他视图。在这个循环中,但与手头的问题无关。
我不确定我是否需要制作一个新的"的RelativeLayout 每次或什么是正确的解决方法。
谢谢
divider.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/divider_parent"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/plan_divider"
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="?android:attr/listDivider" />
LinearLayout containerLL = (LinearLayout) activity.findViewById(mContainerViewId);
for(int i = 0; i<n ; i++){
LayoutInflater li = LayoutInflater.from(activity);
RelativeLayout rl = (RelativeLayout) activity.findViewById(R.id.divider_parent);
View divider = li.inflate(R.layout.divider, rl);
containerLL.addView(divider);
}
答案 0 :(得分:3)
试试这个。
LinearLayout containerLL = (LinearLayout) activity.findViewById(mContainerViewId);
for(int i = 0; i<n ; i++){
LayoutInflater li = LayoutInflater.from(activity);
View divider = li.inflate(R.layout.divider, null, false);
containerLL.addView(divider);
}
答案 1 :(得分:2)
我不确定我是否需要制作一个新的&#34;每次都是RelativeLayout
不,您的问题是您让divider
成为rl
的孩子。它不能是rl
的孩子和containerLL
的孩子。它必须是其中一个孩子。
另外,请勿使用LayoutInflater.from(activity)
。使用activity.getLayoutInflater()
。否则,你的风格和主题可能搞砸了。