안드로이드 스튜디오든 뭐든 개발툴을 사용하다보면
오류는 아니지만 경고문이 나오는걸 많이 볼 수 있잖아요?
그걸로 요즘 득본다고 생각하는 사람입니다..ㅎㅎ
가끔씩 정말 통쾌하게(?) 간단명료한 코드로 정리해줄 때가 있거든요.
워낙 못하다보니 개발툴한테서도 많이 배운답니다 ㅎㅎ
아무튼 경고중에 이해가 잘 안 되는것들이 있어 질문합니다.
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 가 임포트 됐습니다.
변수를 문자열로 변환하는데 왜 굳이 저런일을 해야하죠??
안드로이드 스튜디오의 의도가 뭔가요???
설명해주실분..! 부탁드립니다..ㅠㅠ
너무나 궁금합니다 ㅠㅠ