2014-07-05 2 views
0

TextView 배열의 배열을 사용하고 싶습니다. 모든 TextView 배열 (중첩 된 'for'루프의 코드)에서 모든 TextView의 텍스트를 설정하려고하면 응용 프로그램이 중단됩니다.TextView [] [] 배열이 응용 프로그램을 중단시키는 이유는 무엇입니까?

package com.example.whynotworking; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

TextView[] FirstArray; 
TextView[] SecondArray; 
TextView[] ThirdArray; 

int SizeOfTextViewArrays; 

TextView[][] TheArrayArray = {FirstArray,SecondArray,ThirdArray}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Log.d("DebugTAG", "no problems yet"); 

    SizeOfTextViewArrays = 5; 

    FirstArray = new TextView[SizeOfTextViewArrays]; 
    SecondArray = new TextView[SizeOfTextViewArrays]; 
    ThirdArray = new TextView[SizeOfTextViewArrays]; 

    Log.d("DebugTAG", "still no problems"); 

    taskIwantToDo(); 
} 

public void taskIwantToDo() { 
    for (int i = 0; i < TheArrayArray.length; i++) { 
    for (int j = 0; j < SizeOfTextViewArrays; j++) { 
     Log.d("DebugTAG", "I see this log come up once"); 
     TheArrayArray[i][j].setText("Text to set..."); 
     Log.d("DebugTAG", "But I don't see this one..."); 
    } 
    } 
} 
} 

나는 문제의 일부는 선언과에서 onCreate() 메소드 밖에서 시작되는 텍스트 뷰 [] [] 배열 생각 : 여기 내 코드입니다.

07-05 21 : 나는에서 onCreate() 내부를 시작하려고 할 때, 그것은

로그 캣 출력은 ... 나에게 "배열 상수는 이니셜 라이저에서 사용할 수있는"지시 (IDE 일식) : 08 : 20.346 : D/DebugTAG (340) : 아직 문제 없음 07-05 21 : 08 : 20.346 : D/DebugTAG (340) : 여전히 문제 없음 07-05 21 : 08 : 20.346 : D/DebugTAG (340) :

01 : 난 당신이 배열의 내용을 작성해야이 로그는 한 번

감사

답변

1

을 마련 참조
public void taskIwantToDo() { 
    for (int i = 0; i < TheArrayArray.length; i++) { 
     for (int j = 0; j < SizeOfTextViewArrays; j++) { 
      TheArrayArray[i][j] = new TextView(this); // <-- THIS LINE 
      TheArrayArray[i][j].setText("Text to set..."); 
     } 
    } 
} 

그러나 그 전에 배열을 올바르게 만들어야합니다.

int SizeOfTextViewArrays = 5; 

TextView[] FirstArray = new TextView[SizeOfTextViewArrays]; 
TextView[] SecondArray = new TextView[SizeOfTextViewArrays]; 
TextView[] ThirdArray = new TextView[SizeOfTextViewArrays]; 

TextView[][] TheArrayArray = {FirstArray,SecondArray,ThirdArray}; 

또는 onCreate에서 모든 작업을 수행합니다 : 각 모듈 수준에서 모든 것을 할

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Log.d("DebugTAG", "no problems yet"); 

    SizeOfTextViewArrays = 5; 

    FirstArray = new TextView[SizeOfTextViewArrays]; 
    SecondArray = new TextView[SizeOfTextViewArrays]; 
    ThirdArray = new TextView[SizeOfTextViewArrays]; 

    TheArrayArray = {FirstArray,SecondArray,ThirdArray}; 
+0

이 앱은 여전히 ​​충돌 -이 제안 코드의 새로운 라인에서 충돌이 시간을. 'TheArrayArray','FirstArray','SecondArray', 그리고'ThirdArray'를 설정할 때 – probability

+0

은 여전히 ​​null입니다. 모든 것을 올바른 순서로 설정해야합니다. 예제가 업데이트되었습니다. –

+0

이것이 문제를 해결하면 upvote/accept를 기억하십시오. –

관련 문제