nguyen_hoang_anh_duy Ответов: 1

Проект Android studio: ошибка нужна помощь


Я закончил код, но при отладке возникла такая ошибка :
buttons[i][j].setOnClickListener(this);

он сказал::"
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

Как я могу это исправить?

Что я уже пробовал:

package w17105_anhduy.caro;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


public class Gamescreen extends AppCompatActivity implements View.OnClickListener 
{
    private Button[][]buttons= new Button[3][3];
    private boolean player1turn=true;
    private int roundCount;

    private int player1point;
    private int player2point;

    private TextView textViewPlayer1;
    private TextView textViewPlayer2;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gamescreen);

        textViewPlayer1=findViewById(R.id.text_view_p1);
        textViewPlayer2=findViewById(R.id.text_view_p2);

        for (int i=0;i<3;i++){
              for(int j=0;j<3;j++) {
                String buttonID = "button_" + i + j;
                int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
                buttons[i][j] = findViewById(resID);
                buttons[i][j].setOnClickListener(this);
               }
        }
        Button buttonReset=findViewById(R.id.button_reset);
        buttonReset.setOnClickListener(new View.OnClickListener() 
        {
            @Override
            public void onClick(View view) 
            {
            }
        });
    }
}

David Crow

1) какова ценность resID?
2) Что делает findViewById() вернуться?

1 Ответов

Рейтинг:
1

wseng

Возможно, так и должно быть

buttons[i][j] = findViewById(R.id.resID);