코딩 공부/Kotlin, 안드로이드 스튜디오

[안드로이드 스튜디오] 코틀린: 버튼 누르기 + 애뮬레이터 타임아웃 에러

민j 2023. 8. 5. 23:00

코틀린으로 버튼 만들고 누르는 앱 만들기

 

최종 코드 먼저 공개합니다

1. activity_main.xml 파일 디자인 화면

 

 

2. activity_main.xml 파일 코드

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.386" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="47dp"
        android:text="학과"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="45dp"
        android:text="이름"
        app:layout_constraintStart_toStartOf="@+id/button"
        app:layout_constraintTop_toBottomOf="@+id/button" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

여기서 설정한 id 값을 이용해 메인클래스에서 제어하게 된다.

텍스트뷰의 id는 textView, 학과 버튼의 id는 button, 이름 버튼의 id는 button2 이다.

 

3. MainActivity.kt 소스코드

package com.example.secondpracticeapp

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val clickButton = findViewById<Button>(R.id.button)
        val name = findViewById<Button>(R.id.button2)
        val textview = findViewById<TextView>(R.id.textView)

        clickButton.setOnClickListener {
            textview.text = "국어국문학과"
        }

        name.setOnClickListener {
            textview.text = "홍길동"
        }
    }
}

 

id = button인 버튼을 clickButton 변수로 만들고, id = button2인 버튼을 name 변수로 만들어서 실행시킨다. 

clickButton이 클릭됐을 때 textView의 text값을 "국어국문학과"로 변경하게 된다.

 

...

...

여기서 애뮬레이터 에러가 발생한다..

 

애뮬레이터가 안 돌아가고 300초 타임아웃 에러가 뜬다;;

빨리빨리 돌아가는 것도 아니고 실행 한 번 누르면 20분 순삭... 노트북 열받아서 다른 직업도 못 함.

애뮬레이터 말고 실제 디바이스 연결하면 좀 나으려나

 

에러 좀 고쳐보려고 하면 avd가 실행 중이라고만 하고 어떻게 멈추는지는 안 알려주는 거야 왜

 

 


 

 

여튼 300s timed out 에러 해결 방법

 

1. 애뮬레이터 중지 : 안드로이드 스튜디오 껐다 키기

2. devide manager 에서 해당 avd의 맨 오른쪽 점 세 개 눌러서 Wipe Data 누르기!!!!

우측에 Wipe Data

3. 다시 실행한다 -- 한 시간 반 만에 성공^^

 

 


 

실행 결과

다시 돌아와서 실행 결과를 봅시다.

 

1. 기본 화면   2. 학과 버튼을 누른 화면   3. 이름 버튼을 누른 화면

  와~ 성공