2014-11-02 30 views
0

我試圖將文本設置爲一個按鈕,我得到了下面的代碼中的錯誤:Android的按鍵錯誤 - 陣VS ArrayList的

public class Game extends Activity { 

protected List<Button> button_list = new ArrayList<Button>(); 

Button b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, 
     b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, 
     b21, b22, b23, b24, b25; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.game_activity); 

    Button[] bttn_arr = new Button[] {b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, 
      b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, 
      b21, b22, b23, b24, b25}; 

    button_list.addAll(Arrays.asList(bttn_arr)); 

    bttn_arr[0] = (Button) findViewById(R.id.button1); 

    button_list.get(0).setText("a"); 

爲什麼使用button_list.get(0).setText("a")給我一個錯誤?

我也有button_list.addAll(Arrays.asList(bttn_arr))

- 這是否意味着bttn_arr[0] = button_list.get(0) = b1

如果我使用bttn_arr[0].setText("a")它工作正常。

另外,爲什麼我不能寫button_list.get(0) = (Button) findViewById(R.id.button1)?我不得不寫bttn_arr[0] = (Button) findViewById(R.id.button1)而不是。

+0

它給了什麼錯誤?順便說一下,你沒有忘記在button_list.get(0).setText(「a」)右邊的半列? – 2014-11-02 02:23:54

回答

1

您必須得到NullPointerException。原因是,儘管你聲明瞭像b1,b2這樣的按鈕變量,但是你並沒有創建一個真正的按鈕對象。
bttn_arr[0].setText("a")因爲您分配bttn_arr [0]一個真正的按鈕對象由

bttn_arr[0] = (Button) findViewById(R.id.button1);

設置於ArrayList中的一個按鈕,你應該使用

button_list.set(0,(Button) findViewById(R.id.button1));

這一點,你可以設置後工作正常文字由:

button_list.get(0).setText("a"); 
+1

太神奇了!感謝這工作完美。你也完美地解釋了這個問題 – user2456977 2014-11-02 02:43:07