2014-11-02 46 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