2016-08-14 5 views
1

ループ内にボタンの配列を作成しました。動作するようですが、各ボタンにOnClickListenerを追加すると、NullPointerExceptionが表示されます。どうすれば修正できますか?NullPointerException配列のボタンに対してsetOnClickListenerを設定した場合

これは私のコードです:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_layout); 
    fieldModel=new Field(); 
    buttons=new Button[10][10]; 
    for(int i=0; i<10; i++) { 
     for (int j = 0; j < 10; j++) { 
      String buttonID = "button" + i + j; 
      int resID = getResources().getIdentifier(buttonID, "id", getPackageName()); 
      buttons[i][j] = ((Button) findViewById(resID)); 
      buttons[i][j].setOnClickListener(new View.OnClickListener() { // <-- I get the exception here... 
       @Override 
       public void onClick(View v) { 
        "some action" 
     } 
}); 
+0

これらのボタンはレイアウト.main_layoutにあります –

答えて

0

R.layout.main_layoutには、 'button99'から 'button99'まで100個のボタンがありますか?いずれかが見つからない場合は、マークした行にヌルポインターが表示されます。

ボタンを手動で追加するのではなく、GridView、またはRecyclerViewをGridLayoutManagerで使用することも検討する価値があります。

+0

ありがとうございました!ボタンがありませんが、最初のボタンにエラーが表示されるため、エラーが発生する可能性はありません。 – DenisBo

0

idが活動のレイアウトに含まれていないので、あなたは例外を取得します。 findViewByIdを使用してButtonオブジェクトを一致させる場合は、最初にレイアウトファイルに追加する必要があります。既に存在する場合は、findViewById(resId)で使用するIDが正しいことを確認してください。

関連する問題