Seongwon Lim

[Android] 코틀린(Kotlin) Intent를 이용하여 페이지 이동하기 본문

Android

[Android] 코틀린(Kotlin) Intent를 이용하여 페이지 이동하기

limsw 2022. 7. 29. 14:27
반응형

서론

이번 글에서는 코틀린에서 Intent를 사용하여 다른 페이지로 이동하는 기능을 간단하게 구현해보고자 한다.

또한, 간단한 예제이므로 데이터의 이동을 다루지는 않으며 단순히 페이지 슬라이드를 위한 기능만을 구현한다.

프로젝트 생성하기

프로젝트는 Empty Activity를 선택한다.

 

다음으로 넘어가면 생성할 프로젝트의 구성을 설정할 수 있다. 언어를 코틀린으로 바꿔준 뒤 프로젝트를 생성한다.

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:background="#fff"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnNewPage"
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:layout_weight="1"
        android:layout_marginTop="200dp"
        android:text="서브 페이지로 이동하기"
        />

</LinearLayout>

버튼을 클릭했을 때 페이지를 이동하는 기능을 구현할 예정이므로 버튼 위젯을 하나 추가했다.

또한 해당 버튼을 코틀린 파일에서 사용하기 위해 id값을 btnNewPage 라는 문자열로 정의했다.

MainActivity.kt 파일 수정하기

이제 버튼을 클릭했을 때 페이지를 이동하는 기능을 구현해보자.

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

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

        btnNewPage.setOnClickListener {
            val intent = Intent(this, SecondActivity::class.java)
            startActivity(intent)
        }
    }
}

단순 페이지 이동을 위한 코드는 매우 간단하다. 해당 코드들의 의미는 다음과 같다.

  • 먼저 findViewById를 통해서 activity_main.xml 파일에서 만든 버튼 위젯을 가져온다.
  • 버튼 클릭 시 이벤트가 발생하는 setOnClickListener 를 정의하고 그 안에는 이벤트 발생 시 수행될 기능을 정의했다.
    • 특정 페이지로 이동할 액티비티를 정의한 Intent 객체를 생성한다.
    • Intent 객체를 startActivity 메서드를 통해서 실행한다.

이제 이동할 서브 페이지를 생성해보자.

SecondActivity 파일 생성하기

MainActivity 파일이 있는 곳에 SecondActivity 파일을 생성하고 다음과 같이 코드를 정의한다.

class SecondActivity : AppCompatActivity() {

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

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

        btnReturn.setOnClickListener {
            val intent = Intent(this, MainActivity::class.java)
            startActivity(intent)
        }
    }
}

SecondActivity 파일의 코드 또한 MainActivity의 로직과 동일하다.

서브 페이지에 있는 버튼(btnReturn)을 클릭하면 이벤트 리스너가 실행되고 그 안에는 Intent 객체를 생성해서 다시 메인 페이지로 이동하게끔 구현했다.

 

activity_second.xml 파일 생성하기

activity_main.xml 파일이 있는 곳에 activity_second.xml 파일을 생성하고 다음과 같이 코드를 정의한다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <Button
        android:id="@+id/btnReturn"
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:layout_weight="1"
        android:layout_marginTop="200dp"
        android:text="메인으로 이동하기" />
</LinearLayout>

마지막으로 Manifest 파일에 SecondActivity를 추가시키기만 하면 된다.

AndroidManifest.xml 파일 수정하기

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.IntentExample">
        <!--   해당 부분 추가     -->
        <activity
            android:name=".SecondActivity"
            android:theme="@style/Theme.AppCompat.DayNight.DarkActionBar">
        </activity>
        <!--        -->
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

이제 앱을 실행시켜서 결과를 확인해보자.

결과 확인하기

Comments