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++) {

編集:この場合、bとの両方がvalues たまたま同じ長さであるため、2 つのループを統合できます。

于 2013-04-13T02:42:42.320 に答える