0

我正在尝试显示按钮。但是下面的代码不起作用。不幸的是,应用程序已停止。需要额外的代码吗?

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    LinearLayout layout = new LinearLayout(this);
    String[] values = { "GOogle", "Yahoo", "Twi" };
    Button[] b = new Button[values.length];
    for (int i = 1; i <= values.length; i++) {
        b[i].setText(values[i]);
        layout.addView(b[i]);
    }
    setContentView(layout);
}
4

2 回答 2

2

Button在您尝试调用setText这将导致 NPE之前,您的数组元素不会被实例化。尝试这个

for (int i=0; i < b.length; i++) {
   b[i] = new Button(this); // create Button programmatically
}   

此外,在 Java 中,数组是从零开始的,请替换

for (int i = 1; i <= values.length; i++) {

for (int i = 0; i < values.length; i++) {

编辑:在这种情况下,您的bvalues 恰好是相同的长度,因此您可以将 2 个循环集成在一起。

于 2013-04-13T02:42:42.320 回答
0

LinearLayout 布局 = (LinearLayout) findViewById(R.id.liner);

    String[] values = { "GOogle", "Yahoo", "Twi" };

    for (int i = 0; i < values.length; i++) {
        Button button = new Button(this);
        button.setText(values[i]);
        layout.addView(button);
    }
于 2013-04-13T05:25:00.577 回答