打开此应用程序时,我不知道代码中的问题是什么?

时间:2018-10-11 12:08:41

标签: android android-studio

     package com.example.shery.tictactoe;

 import android.annotation.SuppressLint;
 import android.graphics.Color;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;
  import android.widget.TextView;

 public class MainActivity extends AppCompatActivity {
 Button btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9;
 TextView tv1;
String field1 = tv1.getText().toString();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn1 = (Button)findViewById(R.id.btn1);
    btn2 = (Button)findViewById(R.id.btn2);
    btn3 = (Button)findViewById(R.id.btn3);
    btn4 = (Button)findViewById(R.id.btn4);
    btn5 = (Button)findViewById(R.id.btn5);
    btn6 = (Button)findViewById(R.id.btn6);
    btn7 = (Button)findViewById(R.id.btn7);
    btn8 = (Button)findViewById(R.id.btn8);
    btn9 = (Button)findViewById(R.id.btn9);
    tv1 = (TextView)findViewById(R.id.tv1);

    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {


            if(field1.equals("Turn X"))
            {
                btn1.setText("X");
                tv1.setText("Turn O");
                btn1.setEnabled(false);
            }
            else
            {
                btn1.setText("O");
                tv1.setText("Turn X");
                btn1.setEnabled(false);

            }

        }
    });
    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if(field1.equals("Turn X"))
            {
                btn2.setText("X");
                tv1.setText("Turn O");
                btn2.setEnabled(false);

            }
            else
            {
                btn2.setText("O");
                tv1.setText("Turn X");
                btn2.setEnabled(false);

            }

        }
    });
    btn3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if(field1.equals("Turn X"))
            {
                btn3.setText("X");
                tv1.setText("Turn O");
                btn3.setEnabled(false);
            }
            else
            {
                btn3.setText("O");
                tv1.setText("Turn X");
                btn3.setEnabled(false);

            }

        }
    });
    btn4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String field1 = tv1.getText().toString();

            if(field1.equals("Turn X"))
            {
                btn4.setText("X");
                tv1.setText("Turn O");
                btn4.setEnabled(false);
            }
            else
            {
                btn4.setText("O");
                tv1.setText("Turn X");
                btn4.setEnabled(false);

            }

        }
    });
    btn5.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String field1 = tv1.getText().toString();

            if(field1.equals("Turn X"))
            {
                btn5.setText("X");
                tv1.setText("Turn O");
                btn5.setEnabled(false);
            }
            else
            {
                btn5.setText("O");
                tv1.setText("Turn X");
                btn5.setEnabled(false);
            }

        }
    });
    btn6.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String field1 = tv1.getText().toString();

            if(field1.equals("Turn X"))
            {
                btn6.setText("X");
                tv1.setText("Turn O");
                btn6.setEnabled(false);
            }
            else
            {
                btn6.setText("O");
                tv1.setText("Turn X");
                btn6.setEnabled(false);

            }

        }
    });
    btn7.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String field1 = tv1.getText().toString();

            if(field1.equals("Turn X"))
            {
                btn7.setText("X");
                tv1.setText("Turn O");
                btn7.setEnabled(false);
            }
            else
            {
                btn7.setText("O");
                tv1.setText("Turn X");
                btn7.setEnabled(false);

            }

        }
    });
    btn8.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String field1 = tv1.getText().toString();

            if(field1.equals("Turn X"))
            {
                btn8.setText("X");
                tv1.setText("Turn O");
                btn8.setEnabled(false);
            }
            else
            {
                btn8.setText("O");
                tv1.setText("Turn X");
                btn8.setEnabled(false);

            }

        }
    });
    btn8.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String field1 = tv1.getText().toString();

            if(field1.equals("Turn X"))
            {
                btn9.setText("X");
                tv1.setText("Turn O");
                btn9.setEnabled(false);
            }
            else
            {
                btn9.setText("O");
                tv1.setText("Turn X");
                btn9.setEnabled(false);

            }

        }
    });



}

}

我不知道我打开该应用程序时我的代码出了什么问题,我的应用崩溃了,你可以在上面检查我的代码。我不知道我打开该应用程序时我的代码出了什么问题,我的应用崩溃又像打开了应用为什么当我被写成2 btn click listener时,应用程序可以正常工作,但是当我添加更多点击列表器时,我的应用程序崩溃了,为什么会发生这种情况?

3 个答案:

答案 0 :(得分:0)

String field1 = tv1.getText().toString();不能全局调用。在定义tv1 = (TextView)findViewById(R.id.tv1);

之后在OnCreate方法中执行此操作

答案 1 :(得分:0)

  

String field1 = tv1.getText()。toString();

在获得答案之前,您必须了解为什么会发生此错误以及如何防止该错误。您必须学习活动的生命周期,并且对此有清晰的认识。

问题是textview无法在onCreate()之外初始化。因为视图仅在onCreate()方法内部呈现,所以只有空指针异常。如下重写代码。您的问题已解决。

sap.drop(...)

答案 2 :(得分:0)

onCreate中的第一名:


tv1 = (TextView)findViewById(R.id.tv1);

然后第二行:

 field1 = tv1.getText().toString();