2012-12-24 2 views
3

내 응용 프로그램의 경우 확인란과 textviews를 사용하여 여러 개의 선형 선형 레이아웃을 동적으로 만들어야합니다. 현재 나는 for 루프 내에서 이들을 동적으로 생성한다. 성능 및 편의성을 위해 layoutinflater를 사용하는 것이 더 좋은 방법 일 것이라고 생각하여 정확한 서식을 가진 하나의 수평 선형 레이아웃을 정의한 다음 일종의 루프 내에서이를 추가합니다. 그러나이 문제가 발생합니다. 나는 난 후 무엇을 구현하는 더 나은 방법이있는 경우에도 열려있어 (또는 내 현재의 방법은 성능 등에 실제로 더 나은 경우)여러 개의 뷰를 추가하는 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); 

문제는 내가에 대한이를 넣을 수 없다 어떤 종류의 루프. 다음은 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. 

또한 레이아웃을 주 선형 레이아웃에 추가 한 다음 가져 와서 복사 한 다음 추가하는 방법도 고려했습니다. 너희들이이 일을하는 법을 배울 수있게 도와 줄 수 있니?

대단히 감사합니다!

+0

왜 모든 종류의 루프에 넣을 수 없습니까? –

+0

죄송합니다, 내 logcat을 포함 시켰습니다. – AndroidPenguin

+0

루프에서 선형 레이아웃의 ID를 설정하면 어떻게됩니까? 예 : l.setId (i) – jnthnjns

답변

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

나는 문제가 당신이 ViewGroup 매개 변수로 main을 지정하는 것으로 판단됩니다.

attachToRoot 매개 변수를 true으로 설정하고 main.addView(l) 행을 삭제 해보세요.

또는 ViewGroup 매개 변수를 null으로 설정하고 main.addView(l) 행을 유지하십시오.

+2

첫 번째 해결 방법은 오류가 없지만 하나의보기 만 추가되었습니다. 두 번째는 완벽하게 작동했습니다! : D – AndroidPenguin

+0

@AndroidPenguin : 도와 줘서 기쁘다 - 나는이 중 하나가 작동하지만, 내가 이와 같은 일을한지 얼마되지 않아 정확히 기억하지 못한다고 생각했다. – Squonk

+0

나는 그것이 단순한 해결책이라고 생각하지 못한다. 내가 완전히 벗어나야한다고 생각했다. P 도움에 감사한다. Squonk. :) – AndroidPenguin