wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Android/Challenge

패스트캠퍼스 챌린지 08일차

Kick_snare 2022. 1. 31. 23:30
728x90

08일차

생성일: 2022년 1월 31일 오후 11:07

30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online

강의 목표


  • 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
  • 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
  • 앱 개발시 원하는 기능을 구현하기 위해 어떤 기술이 필요한 지 알 수 있습니다.
  • 디자인 아키텍처 패턴, 비동기 처리 등 효율적인 앱 개발 방법을 익힐 수 있습니다.

목차 02 Basic - Ch01.BMI계산기


  • 인트로(완성앱&구현기능소개)
  • Linearlayout 이용하여 화면 그리기
  • 화면을 이쁘게 꾸며보기
  • 키와 몸무게 입력 화면 기능 구현하기 (1)
  • 키와 몸무게 입력 화면 기능 구현하기 (2)
  • 결과화면 기능 구현하기
  • 아웃트로(정리)

키와 몸무게 입력 화면 기능 구현하기 (2)

  • result 버튼에 action을 추가하여 사용자가 입력한 값을 가져와 계산할 수 있도록 함
  • resultButton 에 click 이벤트리스너를 추가한다
resultButton.setOnClickListener {
    Log.d("MainActivity", "Result Button이 클릭 되었음")
}
  • 람다함수를 이용하여 인터페이스를 추가하지 않고 바로 사용
  • 확인을 위해 디버그 메세지를 추가한다
2022-01-31 23:12:01.958 30055-30055/com.kicksnare.aop.part1.aop.part2.chapter01 D/MainActivity: Result Button이 클릭 되었음
  • Logcat 에 위와 같이 추가된다
  • height와 weight 값을 가져오기 위해 view에서 id로 찾은 값을 가져온다
val height : Int = heightEditText.text.toString().toInt()
val weight : Int = weightEditText.text.toString().toInt()
  • 하지만 이는 정수가 아니므로 tostring 과 toint로 바꾸어 준다
  • result 버튼을 눌러 로그를 찍어보면 debug 창에 오류가 난다
2022-01-31 23:18:19.683 30524-30524/com.kicksnare.aop.part1.aop.part2.chapter01 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.kicksnare.aop.part1.aop.part2.chapter01, PID: 30524
java.lang.NumberFormatException: For input string: ""
    at java.lang.Integer.parseInt(Integer.java:627)
    at java.lang.Integer.parseInt(Integer.java:650)
  • 이는 toInt() 에서 초기 빈 값이 int로 변환될 수 없기 때문에 생긴 오류로, 예외처리가 필요하다
if(heightEditText.text.isEmpty() || weightEditText.text.isEmpty()) {
    Toast.makeText(this, "빈 값이 있습니다.", Toast.LENGTH_SHORT).show()
    return@setOnClickListener
}
  • 입력 칸에서 빈 값이 있으면 예외처리한다
  • Toast 로 메세지를 띄어주기 return 하여 click 리스너 함수를 종료

전체 코드

super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val heightEditText: EditText = findViewById(R.id.heightEditText);
val weightEditText = findViewById<EditText>(R.id.weightEditText);
val resultButton = findViewById<Button>(R.id.resultButton);

resultButton.setOnClickListener {
    Log.d("MainActivity", "Result Button이 클릭 되었음")

    if(heightEditText.text.isEmpty() || weightEditText.text.isEmpty()) {
        Toast.makeText(this, "빈 값이 있습니다.", Toast.LENGTH_SHORT).show()
        return@setOnClickListener
    }
    // 이 아래로는 절대 빈 값이 올 수 없음.

    val height : Int = heightEditText.text.toString().toInt()
    val weight : Int = weightEditText.text.toString().toInt()

    Log.d("MainActivity", "height : $height, weight : $height")
}

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

수강인증샷

링크

https://bit.ly/37BpXiC

728x90