Kotlin) 간단 앱 만들기 Activity 전환 하기

2021. 3. 31. 09:37IT관련

728x90
반응형

Android Studio에서 New Project 생성 하여 Empty Activity로 생성을 합니다.

activity_main.xml 을 열어 우측 상단의 Split를 눌러 디자인 모드로 들어갑니다.

기본으로 추가 되어 있는 TextView에 id를 부여해주고

다음 화면으로 넘어갈 버튼을 만듭니다.

<?xml version="1.0" encoding="utf-8"?>
<!-- activity_main.xml -->
<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/tv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btnNext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Next"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

이제 "다음 화면" 을 만듭니다.

<?xml version="1.0" encoding="utf-8"?>
<!-- activity_next.xml -->
<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=".NextActivity">

    <TextView
        android:id="@+id/tv_comment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btnBack"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Back"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.kt 로 이동 하여 아래 처럼 작성 합니다.

package com.sunbae.easy_switch

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

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

        // TextView에 내용을 '하이하이' 라고 씁니다
        setTextViewText()
        
        // 버튼 이벤트 연결
        btnNext.setOnClickListener{
            // intent 전달
            val intent = Intent(this,NextActivity::class.java)
            intent.putExtra("name",tv_name.text)
            startActivity(intent)
        }
    }

    fun setTextViewText(){
        tv_name.text = "하이하이"
    }

}

만약 아래 코드 작성 시 tv_name 부분에서 오류가 난다면 아래 링크로 들어가 플러그인을 추가하면 됩니다.

blog.naver.com/tnsqo1126/222270887176

화면을 넘겨주는 코드는 작성됐으니 이제 다음 화면에서 값을 받아오는 코드를 작성 합니다.

NextActivity.kt로 이동하여 아래 처럼 코드를 작성 합니다.

package com.sunbae.easy_switch

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_next.*

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

        // intent 넘길 때 받아온 텍스트를 저장 합니다.
        val name = intent.getStringExtra("name")
        // 텍스트 뷰에 text 씁니다.
        tv_comment.text = name

        // 뒤로가기 버튼을 동작 합니다.
        btnBack.setOnClickListener {
            onBackPressed()
        }

    }
}

이제 컴파일하여 실행하면 아래와 같이 실행이 됩니다

 

 

728x90
반응형