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

안드로이드 스튜디오 경고문 해석부탁합니다..ㅠ

0 추천
안드로이드 스튜디오든 뭐든 개발툴을 사용하다보면

오류는 아니지만 경고문이 나오는걸 많이 볼 수 있잖아요?

그걸로 요즘 득본다고 생각하는 사람입니다..ㅎㅎ

가끔씩 정말 통쾌하게(?) 간단명료한 코드로 정리해줄 때가 있거든요.

워낙 못하다보니 개발툴한테서도 많이 배운답니다 ㅎㅎ

 

아무튼 경고중에 이해가 잘 안 되는것들이 있어 질문합니다.

 

buttonNine.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(getCurrentFocus().equals(textViewNum1)) { num1 = textViewNum1.getText().toString(); sum = Integer.parseInt(num1) * 10 + 9; num1 = sum.toString(); textViewNum1.setText(sum.toString()); }else if(getCurrentFocus().equals(textViewNum2)) { num2 = textViewNum2.getText().toString(); sum = Integer.parseInt(num2) * 10 + 9; num2 = sum.toString(); textViewNum2.setText(sum.toString()); }else {} } });

제가 계산기 프로그램을 연습삼아 개발했습니다.

이 부분은 숫자 9버튼 리스너부분입니다.

간단하니 해석해보시면 대충 아실겁니다.

xml부분에서는
(수정이 불가능한)EditText 두개를 만들고
포커스가 주었을 때, 버튼을 누르면

기존숫자에 10을 곱해서 일의 자리로 9가 들어가도록 설계했습니다. 실행도 잘 되구요.

 
그런데 여기에 이해가 안되는 경고문구가 두개있었습니다.

if(getCurrentFocus().equals(textViewNum1)) {

이부분이 'java.lang.NullPointerException' 을 야기 시킬거라는 식으로 경고가 나왔고
경고를 마우스로 클릭해서 추천대로 바꿨더니

if(Objects.equals(getCurrentFocus(), textViewNum1)) {

이렇게 바뀌더라구요.

저는 현재포커스가 객체라고 생각했고
그에맞게 이퀄메서드로 저렇게 썼더니 밑으로 변환하는게 더 좋다! 라는 식으로 나온것같은데
코드상 차이는 없어보이고 의미상 무슨 차이인가요??

 

그리고

textViewNum1.setText(sum.toString());

textViewNum2.setText(sum.toString());

요기 두 행에서 sum.toString() 부분에서 경고가 나면서

리스너 코드부
@Override 위에

@SuppressLint("SetTextI18n")

이런것이 생기고

import android.annotation.SuppressLint;

SuppressLint 가 임포트 됐습니다.


변수를 문자열로 변환하는데 왜 굳이 저런일을 해야하죠??
안드로이드 스튜디오의 의도가 뭔가요???
 

설명해주실분..! 부탁드립니다..ㅠㅠ

너무나 궁금합니다 ㅠㅠ
잡스리즈시절 (140 포인트) 님이 2018년 3월 20일 질문
잡스리즈시절님이 2018년 3월 20일 수정

1개의 답변

0 추천

처음 질문은 

조건문에서 equals 와 == 의 사용법에 대한 이해가 필요해보입니다

http://ojava.tistory.com/15

두번째는 자료형과 형변환 참고하시고

 

(SetTextI18n) lint annotation은 아래 링크 참고하세요

http://tools.android.com/tips/lint-checks

 

마지막 질문은 아래 문서 읽어보세요

https://developer.android.com/reference/android/annotation/SuppressLint.html

 

설춘식 (5,250 포인트) 님이 2018년 3월 20일 답변
아..ㅠㅠ 제가 질문을 너무 부실하게 한것같습니다..
저 코드는 전부 제가 작성했고 모두 무슨뜻으로 썼는지 이해하고는 있습니다.
다만, 에러가 아닌 노랑색 경고문구를 참고했을때
처음썼던 코드를 밑의 코드로 바꿔주는데, 이때
왜 저런식으로 쓰는게 더 효율적인건지(혹은 더 정확한표현인지) 궁금했습니다.
고로 질문도 두 가지였는데 질문을 두서있게 수정해야겠습니다..ㅠ
답변 감사합니다. 참고하겠습니다.
...