🐞Debugging Story

[Java] java.lang.NullPointerException: Attempt to invoke virtual method '-' on a null object reference

루리야ㅑ 2023. 12. 22. 16:52
λ°˜μ‘ν˜•

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.CountDownTimer.cancel()' on a null object reference

 

μ•ŒλžŒκΈ°λŠ₯의 μ–΄ν”Œμ„ λ§Œλ“€λ‹€κ°€ 타이머 μ·¨μ†Œ λ²„νŠΌμ„ λ§Œλ“€μ—ˆλŠ”λ°
μ‹œμž‘μ„ λˆ„λ₯΄μ§€ μ•Šκ³  μ·¨μ†Œ λ²„νŠΌμ„ λˆ„λ₯΄λ‹ˆ μ–΄ν”Œμ΄ κ°•μ œμ’…λ£Œλ˜μ—ˆλ‹€.

Logcat을 μ‚΄νŽ΄ λ³΄λ‹ˆ 이런 μ—λŸ¬κ°€ 났닀.

 

원인

원인은 λ§΄λ²„λ³€μˆ˜λ₯Ό μƒμ„±ν•œ λ’€ 객체λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³ (μ‹œμž‘ λ²„νŠΌ) μ·¨μ†Œλ₯Ό ν•΄μ„œ λ‚˜μ˜¨

NullPointer μ—λŸ¬μ˜€λ‹€.

 

해결방법 

μ·¨μ†Œ λ²„νŠΌ 클릭 λ©”μ†Œλ“œμ—μ„œ ifλ₯Ό ν™œμš©ν•΄μ„œ 객체λ₯Ό μƒμ„±ν–ˆλŠ”μ§€ μ•ˆν–ˆλŠ”μ§€ ν™•μΈν•˜μ—¬
객체가 μƒμ„±λ˜μ§€ μ•Šμ•˜λ‹€λ©΄ λ„˜μ–΄κ°€λ„λ‘ ν–ˆλ‹€.

μ΄λ ‡κ²Œ ν•˜λ©΄ CPUκ°€ 내렀가지 μ•ŠλŠ”λ‹€.

        btnCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // 객체 μƒμ„±ν–ˆλŠ”μ§€ μ•ˆν–ˆλŠ”μ§€ 확인 ν›„
                if(countDownTimer == null){
                    return;
                }

                // λ™μž‘ν•˜κ³  μžˆλŠ” 타이머λ₯Ό μ·¨μ†Œμ‹œν‚¨λ‹€.
                countDownTimer.cancel();

                // 화면에 남은 초λ₯Ό,
                // μœ μ €κ°€ μž…λ ₯ν–ˆλ˜ μ„ΈνŒ…κ°’μœΌλ‘œ λ‹€μ‹œ 보여쀀닀.

                String strTime = editTime.getText().toString().trim();
                txtTime.setText(strTime);


            }
        });
λ°˜μ‘ν˜•