2011-03-17 6 views
0

나는 다른 레이아웃 내부의 레이아웃을 데려 가고 싶다는하지만이 작업을 수행 할 때 relLayout.addView(squareLayout); 라인레이아웃을 다른 레이아웃에 배치하는 방법은 무엇입니까?

for (int i = 0; i < 6; i++) { 
    for (int j = 0; j < 7; j++) { 

     RelativeLayout relLayout = (RelativeLayout) findViewById(relIds[i][j]); 
     relLayout.removeAllViews(); 

     RelativeLayout squareLayout = (RelativeLayout) findViewById(R.id.square); 
     relLayout.addView(squareLayout); 
    } 
} 

어떻게해야하나요 알려주세요에 NullPointerException 제공?

+1

XML 파일이 필요합니다. 또한, "relIds"는 무엇입니까? LogCat을 사용하여 2 개의 레이아웃 중 어느 것이 null인지 알아 내야합니다. – Klaus

+0

'relLayout.addView (squareLayout);에'NullPointerException'을 주었으므로 squareLayout은 null이어야합니다. setContentView를 설정 했습니까? 기본 레이아웃의'square' 뷰 부분입니까? – pankajagarwal

답변

1

relLayoutremoveAllViews() 메서드에 액세스하는 동안 null이 아닙니다. 따라서 findViewById() 또는 다른 스레드는 null을 relLayout 인스턴스로 설정했을 것입니다.

+0

왜 거기에 있어야합니까? 그리고 만약 그것이 6이라면'ArrayIndexOutOfBoundsException'가'NullPointerException'이 아닐 수도 있습니다. 귀하의 답변을 수정하고 올바른지 확인한 후 투표를 철회합니다. –

+0

@vikas : 당신 말이 맞아요. –

+0

그건 좋은 사람이에요. 정말 고마워. –

0

초기화하지 않고 relIds [] []를 잘못 사용하면 Null 포인터 예외가 발생할 수도 있습니다.

관련 문제