Coding/Android(kotlin)

화면 전환(Intent)

코딩; 2022. 2. 10. 19:33

 

1. app - src - main - java - 메인패키지 우클릭 - 새로만들기 - Activity - Empty Activity - SecondActivity로 생성(activity_second 자동 생성됨)

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    <EditText
            android:layout_width="473dp"
            android:layout_height="52dp"
            android:inputType="textPersonName"
            android:ems="10"
            android:id="@+id/editName"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" app:layout_constraintHorizontal_bias="0.503"
            app:layout_constraintVertical_bias="0.151"/>
    <EditText
            android:layout_width="473dp"
            android:layout_height="52dp"
            android:inputType="textPersonName"
            android:ems="10"
            android:id="@+id/editCount"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" app:layout_constraintHorizontal_bias="0.503"
            app:layout_constraintVertical_bias="0.248"/>
    <EditText
            android:layout_width="473dp"
            android:layout_height="52dp"
            android:inputType="textPersonName"
            android:ems="10"
            android:id="@+id/editLevel"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" app:layout_constraintHorizontal_bias="0.503"
            app:layout_constraintVertical_bias="0.348"/>
    <Button
            android:text="이동"
            android:layout_width="467dp"
            android:layout_height="66dp" android:id="@+id/move"
            app:layout_constraintTop_toBottomOf="@+id/editLevel" app:layout_constraintStart_toStartOf="parent"
            android:layout_marginTop="68dp" android:layout_marginStart="68dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>

 

 

2. activity_second.xml

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

    <TextView
            android:text="TextView"
            android:layout_width="425dp"
            android:layout_height="73dp" android:id="@+id/textView"
            app:layout_constraintTop_toTopOf="parent"
            android:textSize="30dp"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" app:layout_constraintHorizontal_bias="0.502"
            app:layout_constraintVertical_bias="0.271"/>
    <Button
            android:text="읽기"
            android:layout_width="262dp"
            android:layout_height="75dp" android:id="@+id/read"
            app:layout_constraintTop_toBottomOf="@+id/textView" app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="128dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>

 

 

 

3. app - src - main - java - 메인패키지 우클릭 - 새로만들기 - kotlin 클래스/파일 - Student로 생성

Student.kt

// Parcel : 꾸러미, 소포
class Student(var name:String?, var count:Int, var level:String?) : Parcelable{

    constructor(parcel:Parcel):this(parcel.readString(), parcel.readInt(), parcel.readString()){
    }

    override fun writeToParcel(parcel: Parcel?, p1: Int) {
        parcel?.writeString(name)
        parcel?.writeInt(count)
        parcel?.writeString(level)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<Student> {
        override fun createFromParcel(parcel: Parcel): Student {
            return Student(parcel)
        }

        override fun newArray(size: Int): Array<Student?> {
            return arrayOfNulls(size)
        }
    }
}

 

4. MainActivity.kt

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

        val editName = findViewById<EditText>(R.id.editName)
        val editCount = findViewById<EditText>(R.id.editCount)
        val editLevel = findViewById<EditText>(R.id.editLevel)

        val move = findViewById<Button>(R.id.move)

        move.setOnClickListener {
            var student = Student(editName.text.toString(), editCount.text.toString().toInt(), editLevel.text.toString())

            // 여행준비
            val nextIntent = Intent(this, SecondActivity::class.java)
            // 짐싸
            nextIntent.putExtra("student", student)
            // 출발!
            startActivity(nextIntent)
        }
    }
}

 

5. SecondActivity.kt

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

        val textView = findViewById<TextView>(R.id.textView)
        val read = findViewById<Button>(R.id.read)
        read.setOnClickListener {

            // 짐풀자
            var student = intent.getParcelableExtra<Student>("student")
            if(student != null){
                textView.text = "${student.name} ${student.count} ${student.level}"
            }
        }
    }
}