2012-06-20 3 views
2

이 사이트에 새로운 미안합니다.이 질문은 부적절하거나 잘못되었습니다.중첩 된 뷰가 렌더링되지 않습니다

안드로이드 : 내가보기를 확장하고 잘 작동하는 사용자 정의 버튼 클래스를 작성했습니다

. 이제는 특정 방식으로 정렬 된 이러한 맞춤 버튼 중 몇 가지를 사용하는 숫자 키패드 클래스를 만들고 싶습니다. 그런 다음 전화 다이얼러 앱에서 사용할 수 있습니다. 앱의 주요 활동 내에서 키패드를 만들 수 있지만 괜찮은 것 같습니다.하지만이 키패드를 자체 클래스 내에 만들어 재사용하기 쉽도록하고 싶습니다. 코드를 자체 클래스로 옮기면 오류가 발생하거나 화면에 아무 것도 표시되지 않습니다. 나는 문제의 일부가 자식보기가 어떤 클래스에 추가되는지 생각한다.

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    LinearLayout layout = new LinearLayout(this); 
    layout.setOrientation(1); 
    LcarsButton numericPad[] = new LcarsButton[10]; //array of buttons 

    LinearLayout rows[] = new LinearLayout[3]; 

    for(int i=0;i<=2;i++) 
    { 
     rows[i] = new LinearLayout(this); 
     for(int j=1;j<=3;j++) 
     { 
      int k = (i * 3) + j; 
      numericPad[k] = new LcarsButton(this); 
      numericPad[k].label = "" + k; 
      rows[i].addView(numericPad[k]); 
     } 
     layout.addView(rows[i]); 
    } 

그것은 각 '행'3 개 버튼을 할당 배열 numericPad를 순환 한 후 3 레이아웃 ''행 년대에 '

다음은 주요 활동에 내 코드입니다. 이것은 잘 작동합니다. 다음은 클래스 생성자에서 볼 수 있듯이 코드입니다 :

public class LcarsNumPad extends LinearLayout { 

    public LcarsNumPad(Context context) { 
    super(context); 
    this.setOrientation(VERTICAL); 

    LinearLayout layout = new LinearLayout(context); 
    LcarsButton numericPad[] = new LcarsButton[10]; 


    layout.setOrientation(1); 
    LinearLayout rows[] = new LinearLayout[3]; 

    for(int i=0;i<=2;i++) 
    { 
     rows[i] = new LinearLayout(context); 
     for(int j=1;j<=3;j++) 
     { 
      int k = (i * 3) + j; 
      numericPad[k] = new LcarsButton(context); 
      numericPad[k].label = "" + k; 
      rows[i].addView(numericPad[k]); 
     } 
     layout.addView(rows[i]); 
    } 

당신이 코드의 각 특정 부분의 내용을 수용하기 위해 코드의 유일한 차이가있다 볼 수 있듯이. 아무도 내가 잘못 가고 있다고 말할 수 있습니까?

+0

어디에서 레이아웃 매개 변수를 설정합니까? – vrs

+0

새로운 LinearLayout()의 선언에서 설정했지만 작동하지 않으므로 코드를 필수 요소로 제거했습니다. 적어도 디스플레이에 뭔가를 가져다 줄 필요가 없다고 생각하는 것이 맞습니까? 전에 LinearLayout (문맥)을 사용했는지 확신합니다. –

답변

0

onCreate()에 정의 된 변수 layout을 사용하고 있습니다. rows 배열을 기본 액티비티로 전달해야하며 레이아웃에서 레이아웃을 추가 할 수 있습니다.

+0

흠 ... 가능한 경우 클래스 내에 중첩 된 레이아웃을 유지하려고합니다. onCreate() 메서드에서 layout.addView (rows [i])를 수행하면 더 좋을까요? 분명히 내가 그것을 통과해야 할 줄 [] 및 그것을 통해 반복 ... –

+0

이 이유는 신속하게 복잡한 다른 응용 프로그램으로 떨어질 수있는 컨트롤의 미리 정의 된 그룹을 만들 수 싶습니다. 그들의 활동 코드 –

+0

다음 너의 사용자 정의 Numpad의 생성자에서, 레이아웃을 전달하여 행을 추가하면, 그 클래스에서 레이아웃 객체를 얻을 수 있습니다. – noob

관련 문제