繁体   English   中英

当我打开这个应用程序时,我不知道我的代码有什么问题,我的应用程序崩溃了

[英]I dont know what is the problem in my code when i open this app my app crashes

     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 单击侦听器时,该应用程序运行良好,但是当我添加更多单击侦听器时,我的应用程序崩溃了,为什么?

String field1 = tv1.getText().toString(); 不能全局调用。 在定义tv1 = (TextView)findViewById(R.id.tv1);之后在 OnCreate 方法中执行此操作tv1 = (TextView)findViewById(R.id.tv1);

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

在得到答案之前,您必须了解发生此错误的原因以及如何预防。 您必须了解活动的生命周期,并且对此有一些清晰的认识。

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

String field;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    field1 = tv1.getText().toString();
}

首先在onCreate


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

然后第二行:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM