On the click of button the app is not working and the app is being crash. In the xml file , on the gridlayout I have created button, the working of those button is same for that I have use onClick method, but it is not working
<GridLayout
    android:id="@+id/gridlayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:columnCount="3"
    android:layout_centerInParent="true">
    <androidx.appcompat.widget.AppCompatButton
        android:onClick="check"
        android:clickable="true"
        android:id="@+id/btn1">
    </androidx.appcompat.widget.AppCompatButton>
    <androidx.appcompat.widget.AppCompatButton
        android:id="@+id/btn2"
        android:clickable="true"
        android:onClick="check"
        android:layout_marginLeft="10dp">
    </androidx.appcompat.widget.AppCompatButton>
    <androidx.appcompat.widget.AppCompatButton
        android:onClick="check"
        android:clickable="true"
        android:id="@+id/btn3"
        android:layout_marginLeft="10dp">
    </androidx.appcompat.widget.AppCompatButton>
    <androidx.appcompat.widget.AppCompatButton
        android:onClick="check"
        android:clickable="true"
        android:id="@+id/btn4">
    </androidx.appcompat.widget.AppCompatButton>
    <androidx.appcompat.widget.AppCompatButton
        android:onClick="check"
        android:clickable="true"
        android:id="@+id/btn5"
        android:layout_marginLeft="10dp">
    </androidx.appcompat.widget.AppCompatButton>
    <androidx.appcompat.widget.AppCompatButton
        android:onClick="check"
        android:clickable="true"
        android:id="@+id/btn6"
        android:layout_marginLeft="10dp">
    </androidx.appcompat.widget.AppCompatButton>
    <androidx.appcompat.widget.AppCompatButton
        android:onClick="check"
        android:clickable="true"
        android:id="@+id/btn7">
    </androidx.appcompat.widget.AppCompatButton>
    <androidx.appcompat.widget.AppCompatButton
        android:onClick="check"
        android:clickable="true"
        android:id="@+id/btn8"
        android:layout_marginLeft="10dp">
    </androidx.appcompat.widget.AppCompatButton>
    <androidx.appcompat.widget.AppCompatButton
        android:onClick="check"
        android:clickable="true"
        android:id="@+id/btn9"
        android:layout_marginLeft="10dp">
    </androidx.appcompat.widget.AppCompatButton>
</GridLayout>
for those button I have create check method in the java file Here is the java file
 private void findid() {
//        this method is for find the id of evey reference variable
        btn1=findViewById(R.id.btn1);
        btn2=findViewById(R.id.btn2);
        btn3=findViewById(R.id.btn3);
        btn4=findViewById(R.id.btn4);
        btn5=findViewById(R.id.btn5);
        btn6=findViewById(R.id.btn6);
        btn7=findViewById(R.id.btn7);
        btn8=findViewById(R.id.btn8);
        btn9=findViewById(R.id.btn9);
    }
    public void restart() {
        count = 0;
        flag = 0;
        btn1.setText("");
        btn2.setText("");
        btn3.setText("");
        btn4.setText("");
        btn5.setText("");
        btn6.setText("");
        btn7.setText("");
        btn8.setText("");
        btn9.setText("");
    }
    public void check(View  v) {
//        this method is for checking the action of the button
        AppCompatButton btncurrent = (AppCompatButton) v;
        if (btncurrent.getText().toString().equals("")) {
            count++;
            if (flag == 0) {
                btncurrent.setText("X");
                flag = 1;
            } else {
                btncurrent.setText("O");
                flag = 0;
            }
            if (count > 4) {
                //after 4th move there is a chance to wining
                b1 = btn1.getText().toString();
                b2 = btn2.getText().toString();
                b3 = btn3.getText().toString();
                b4 = btn4.getText().toString();
                b5 = btn5.getText().toString();
                b6 = btn6.getText().toString();
                b7 = btn7.getText().toString();
                b8 = btn8.getText().toString();
                b9 = btn9.getText().toString();
                //check condition
                //horinzontal conditions
                if (b1.equals(b2) && b2.equals(b3) && !b1.equals("")) {
                    //1
                    Toast.makeText(this, "Winner is " + b1, Toast.LENGTH_LONG).show();
                } else if (b4.equals(b5) && b5.equals(b6) && !b6.equals("")) {
                    Toast.makeText(this, "Winner is " + b4, Toast.LENGTH_LONG).show();
                    //2
                }
            } else if (b7.equals(b8) && b8.equals(b9) && !b9.equals("")) {
                Toast.makeText(this, "Winner is " + b7, Toast.LENGTH_LONG).show();
                //3
            }
            //vartical conditions
            else if (b1.equals(b4) && b4.equals(b7) && !b4.equals("")) {
                Toast.makeText(this, "Winner is " + b1, Toast.LENGTH_LONG).show();
                //4
            } else if (b2.equals(b5) && b5.equals(b8) && !b8.equals("")) {
                Toast.makeText(this, "Winner is " + b5, Toast.LENGTH_LONG).show();
                //5
            } else if (b3.equals(b6) && b6.equals(b9) && !b9.equals("")) {
                Toast.makeText(this, "Winner is " + b3, Toast.LENGTH_LONG).show();
                //6
            }
            //Dioganal right
            else if (b1.equals(b5) && (b5.equals(b9) && !b9.equals(""))) {
                Toast.makeText(this, "Winner is " + b1, Toast.LENGTH_LONG).show();
                //7
            }
            //Dioganal left
            else if (b3.equals(b5) && b5.equals(b7) && !b7.equals("")) {
                Toast.makeText(this, "Winner is " + b3, Toast.LENGTH_LONG).show();
            }
            else if (count==9){
                Toast.makeText(this, "Match draw", Toast.LENGTH_SHORT).show();
            }
        }
    }
the buttons are not working. when I try to run the app, and click the button the app has crashed. The error I am getting
 --------- beginning of crash
2022-12-27 15:34:48.786 21154-21154/com.sumita.tic_tac_toe E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.sumita.tic_tac_toe, PID: 21154
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at android.view.View$DeclaredOnClickListener.onClick(View.java:5458)
        at android.view.View.performClick(View.java:6412)
        at android.view.View$PerformClick.run(View.java:25341)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:6977)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:528)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:910)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at android.view.View$DeclaredOnClickListener.onClick(View.java:5453)
        at android.view.View.performClick(View.java:6412) 
        at android.view.View$PerformClick.run(View.java:25341) 
        at android.os.Handler.handleCallback(Handler.java:790) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:6977) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:528) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:910) 
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
        at com.sumita.tic_tac_toe.MainActivity.check(MainActivity.java:89)
        at java.lang.reflect.Method.invoke(Native Method) 
        at android.view.View$DeclaredOnClickListener.onClick(View.java:5453) 
        at android.view.View.performClick(View.java:6412) 
        at android.view.View$PerformClick.run(View.java:25341) 
        at android.os.Handler.handleCallback(Handler.java:790) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:6977) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:528) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:910) 
2022-12-27 15:34:48.805 21154-21154/com.sumita.tic_tac_toe I/Process: Sending signal. PID: 21154 SIG: 9
 
     
     
    