RiverMoon Tech Blog
  • 안드로이드 프로그래밍 - 인텐트(Intent)와 Finish
    2023년 10월 15일 23시 12분 39초에 업로드 된 글입니다.
    작성자: Moonsu99

    환경

    • OS - Mac OS 13.5.2
    • Tools - Android Studio Iguana | 2023.2.1 Canary 5
    • Language - Kotlin
    • android version - 12
    • tartgetSDK - 33
    • minSDK - 28

     

    요약

    안드로이드 스튜디오에서 앱 개발 시 여러 페이지를 작성해서 페이지를 넘겨야하는 경우가 종종 존재한다.

    이를 해결하기 위해 Intent기능을 사용해 페이지를 넘기는 기능을 설명할 것이다.

     

    해결방안

    1. acitity_main.xml에 Intent기능을 수행할 버튼을 하나 생성한다.

    2. 생성한 버튼에 id값을 부여한다.

     

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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"
        android:orientation="vertical"
        android:background="@color/white"
        android:gravity="center"
        tools:context=".MainActivity">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="여긴 메인페이지 입니다."
            android:gravity="center"
            android:textColor="@color/black"
            android:layout_marginBottom="20dp"
            android:textSize="20sp"/>
    
        <Button
            android:id="@+id/btn_GoIntent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:backgroundTint="#FFFF00"
            android:textColor="@color/black"
            android:text="페이지 이동( 1 -> 2 )"/>
    
    </LinearLayout>

     

    3. 새로운 액티비티를 생성한다.(res - layout - new - activity- empty views activity 선택한 다음 이름 작성하고 생성)

    4. 해당 액티비티에도 다음 페이지로 이동할 버튼을 생성한다.

     

    activity_intent.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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"
        android:orientation="vertical"
        android:gravity="center"
        android:background="@color/black"
        tools:context=".IntentActivity">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="여긴 인텐트된 두번 째 입니다."
            android:gravity="center"
            android:textColor="@color/white"
            android:layout_marginBottom="20dp"
            android:textSize="20sp"/>
    
    
        <Button
            android:id="@+id/btn_GoFinish"
            android:layout_width="match_parent"
            android:backgroundTint="#33FFFF"
            android:layout_height="wrap_content"
            android:textColor="@color/black"
            android:text="Finish 페이지로 이동"/>
    
    </LinearLayout>

     

    5. 액티비티를 하나 더 생성하여 finish기능을 수행할 버튼을 생성한다.

     

    activity_finish.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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"
        android:gravity="center"
        android:background="#0099FF"
        android:orientation="vertical"
        tools:context=".FinishActivity">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="여긴 마지막 페이지 입니다."
            android:gravity="center"
            android:textColor="@color/white"
            android:layout_marginBottom="20dp"
            android:textSize="20sp"/>
    
    
        <Button
            android:id="@+id/btn_Finish"
            android:layout_width="match_parent"
            android:backgroundTint="#FF99CC"
            android:layout_height="wrap_content"
            android:textColor="@color/black"
            android:text="Finish"/>
    
    </LinearLayout>

     

     

     

    MainActivity.kt

    class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            val goIntent: Button // 버튼 선언
    
            goIntent = findViewById(R.id.btn_GoIntent) // id 값 찾아서 연결
    
    
            goIntent.setOnClickListener {
                val intent = Intent(this, IntentActivity::class.java) // this는 현재 activity, IntentActivity는 이동할 페이지
                startActivity(intent)
            }
        }
    }

    IntentActivity.kt

    class IntentActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_intent)
    
            val goFinish: Button
    
            goFinish = findViewById(R.id.btn_GoFinish)
    
            goFinish.setOnClickListener {
                val intent = Intent(this,FinishActivity::class.java)
                startActivity(intent)
                finish()//추가
            }
        }
    }

    여기서 finish( )기능을 추가하지 않는다면 마지막 페이지에서 finish버튼을 클릭했을 때 첫번째 페이지로 이동하는 것이 아닌 activity_intent로 이동한다.

     

    FinishActivity.kt

    class FinishActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_finish)
    
            val btnFinish: Button
    
            btnFinish = findViewById(R.id.btn_Finish)
    
            btnFinish.setOnClickListener {
                finish() // 클릭 시 finish기능 수행
            }
        }
    }

     

    해당 코드들을 올바르게 작성한다면 다음과 같은 결과를 기대할 수 있다.

     

     

    여기서 마지막페이지에 있는 Finish버튼을 클릭 한다면 메인페이지로 이동하는 것을 확인할 수 있자. 직접 코드를 작성해서 확인해보자.

     

    댓글