2014-07-05 77 views
0

我想使用一個TextView數組的數組。當我嘗試在每個TextView數組(每個TextView的代碼中嵌套'for'循環)中設置文本時,應用程序崩潰。這裏是我的代碼: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()方法之外發起的TextView [] []數組。但是,當我嘗試啓動它裏面的onCreate(),它(Eclipse IDE中)告訴我:「數組常量只能在初始化使用」 ...

的logcat的輸出是:

07-05 21: 08:20.346:D/DebugTAG(340):沒有問題 07-05 21:08:20.346:D/DebugTAG(340):仍然沒有問題 07-05 21:08:20.346:D/DebugTAG(340) :我看到這篇日誌上來一次

感謝

回答

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

的應用程序仍然崩潰 - 這一次它崩潰在建議代碼的新的生產線。 – probability

+0

當您設置'TheArrayArray','FirstArray','SecondArray'和'ThirdArray'仍然爲空時。您需要按正確的順序設置所有內容。用例子更新。 –

+0

如果這能解決您的問題,請記住注意/接受。 –

相關問題