마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이 코드가 오류나는 이유를 알수있을까요?

0 추천

package w.myapplication;

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

import java.util.Random;
import java.util.StringTokenizer;

public class Main2Activity extends AppCompatActivity {

    int p1=10, p2=10, p3=10;
    int count = 0;
    int v1, v2, v3, vie;
    String te1, te2;
    int strcou = 0, balcou = 0;
    String var;
    boolean first = true;
    int[][] whatnum = {{0,0,0,0,1,0},{1,0,0,0,1,0},{2,0,0,0,1,0},{3,0,0,0,1,0},{4,0,0,0,1,0},{5,0,0,0,1,0},{6,0,0,0,1,0},{7,0,0,0,1,0},{8,0,0,0,1,0},{9,0,0,0,1,0}};
    Random ran = new Random();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        final Button com = (Button)findViewById(R.id.button2);
        final EditText user = (EditText) findViewById(R.id.editText);
        final TextView tv = (TextView) findViewById(R.id.textView);
        final TextView tv2 = (TextView)findViewById(R.id.textView2);
        com.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                p1 = ran.nextInt(10);
                Log.d("First Num", ""+p1);
                p2 = ran.nextInt(10);
                Log.d("Second Num", ""+p2);
                p3 = ran.nextInt(10);
                Log.d("Three Num", ""+p3);
                while(count == 0){
                    if(p1 == p2 || p2 == p3 || p3 == p1 || p1 == 0 || whatnum[p1][5] == 1 || whatnum[p2][5] == 1 || whatnum[p3][5] == 1){
                        p1 = ran.nextInt(10);
                        p2 = ran.nextInt(10);
                        p3 = ran.nextInt(10);
                    }else{
                        break;
                    }
                }
                v1 = p1 * 100;
                v2 = p2 * 10;
                v3 = p3;
                vie = v1+v2+v3;
                te1 = Integer.toString(vie);
                Log.d("PC num", ""+te1);
                tv2.setText(te1);
                com.setText("compare!!");

                if(first == true){
                    tv.setText("스트라이크는?");
                    if(user.getText().equals(null)){ //여기 오류남
                        Toast.makeText(Main2Activity.this, "아무값도 입력되지 않음", Toast.LENGTH_SHORT).show();
                    }else{
                        strcou = Integer.parseInt(user.getText().toString());
                    }
                }else{
                    tv.setText("볼은?");
                    balcou = Integer.parseInt(user.getText().toString());
                }
                if(balcou + strcou == 0){
                    whatnum[v1][5] = 1;
                    whatnum[v1][4] = 0;
                    whatnum[v2][5] = 1;
                    whatnum[v2][4] = 0;
                    whatnum[v3][5] = 1;
                    whatnum[v3][4] = 0;
                }

            }
        });
    }
}

이 코드에서 주석친 부분에서 오류가 납니다.

에러코는 
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: w.myapplication, PID: 3131
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
        at w.myapplication.Main2Activity$1.onClick(Main2Activity.java:64)
        at android.view.View.performClick(View.java:6597)
        at android.view.View.performClickInternal(View.java:6574)
        at android.view.View.access$3100(View.java:778)
        at android.view.View$PerformClick.run(View.java:25885)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
입니다
Xenon54 (140 포인트) 님이 2019년 1월 30일 질문
글자수 제한때문에 자세하게 쓸수가 없네요...ㅠㅠ
이게 어떤오류일까요...ㅠㅠ
if(user.getText().equals(null)){ //여기 오류남
user라는 edittext가 비었는지를 체크하고 싶으신거라면 equals(null)이 아니라 lenght가 0인지 체크하도록 수정하시면 됩니다.

2개의 답변

+1 추천

NullPointerException 났습니다.

(user.getText().equals(null) 대신

TextUtils.isEmpty(user.getText()) 를 사용 해 보세요.

익명사용자 님이 2019년 1월 30일 답변
0 추천
https://jizard.tistory.com/9

여기 참고해보세요

Click Event에서 오류나는 것 같아요
OronaminC (490 포인트) 님이 2019년 1월 30일 답변
...