티스토리 뷰

반응형

레이아웃을 만들었으니, 레이아웃에 속한 뷰를 코틀린 코드와 연결하여 콘텐츠 뷰로 표현해보도록 하겠습니다.

 

아래 코드처럼, onCreate 메소드에서 뷰를 표시합니다. setContentsView에서는 리소스(R)에 저장된 레이아웃을 불러와서 표시하게 됩니다. 컴퓨터에서는 주소값으로 파일을 불러들이지만, 사람은 주소값을 일일이 기억하기 힘들기 때문에 id 값이나 특별한 명칭으로 원하는 리소스를 불러오면 됩니다.

 

heightEditText 변수를 보면, EditText 뷰 타입으로 설정하였습니다. 해당 변수에 알맞는 뷰를 가져와서 넣어줘야 하는데, findViewById 함수를 사용하게 됩니다.

weightEditText 변수의 경우, EditText 뷰 타입을 따로 설정하지 않은 경우입니다. 이때 자동적으로 제너릭 타입 <>을 지정하도록 findViewById 옆에 생기는데, 제너릭 타입으로 EditText를 넣어주면 됩니다.

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        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)
        
}
반응형

그리고 버튼을 누르면 결과 값이 다른 액티비티로 넘어가도록 하기 위해, 버튼에 setOnClickListener를 달아 줍니다. if문은 예외 처리를 하기 위한 코딩입니다. 만약, 키나 몸무게가 입력되지 않으면, '빈 값이 있다'는 메시지를 알려주는 경우입니다. 

 

isEmpty( ) 함수를 이용해서, 빈 값인지 파악하고, Toast 메시지를 이용해서 메시지를 띄워 줍니다. 

그리고 if문을 빠져 나와야 하므로, return@setOnClickListener 처리함으로써 이전 단계로 이동하도록 합니다. 

resultButton.setOnClickListener {

            if (heightEditText.text.isEmpty() || weightEditText.text.isEmpty()) {
                Toast.makeText(this, "빈 값이 있습니다.", Toast.LENGTH_SHORT).show()
                return@setOnClickListener
            }
            
            ... 이하 생략
}

 

만약 값이 정상적으로 입력되었다면, 계속 코드가 실행되도록 합니다. 키와 무게 변수에 EditText에 들어가는 값을 넣어주는데, 문자열로 먼저 치환하고, 다시 정수형으로 캐스팅합니다.

 

MainActivity에서 받은 값을 ResultActivity에서 보여줘야 하므로, 인텐트를 사용합니다.

인텐트의 인자로 context(this)가 오고, 이동하게 될 액티비티를 적어주면 됩니다.

 

그리고 인텐트에 putExtra를 사용하여, 넘겨줄 값을 적게 됩니다. startActivity를 통해 ResultActivity를 실행합니다. 

val height: Int = heightEditText.text.toString().toInt()
val weight: Int = weightEditText.text.toString().toInt()
val intent = Intent(this, ResultActivity::class.java)

intent.putExtra("height", height)
intent.putExtra("weight", weight)

startActivity(intent)

 

반응형

'Android Projects' 카테고리의 다른 글

[난수 생성기] UI & 로직 구현  (0) 2021.08.03
[BMI Calculator] 최종 완성  (0) 2021.07.25
[BMI Calculator] 레이아웃 만들기  (0) 2021.07.20
[BMI Calculator] 프로젝트 생성하기  (0) 2021.07.20
전화번호부 만들기  (0) 2021.07.09
댓글