공부/Kotlin

[안드로이드] intent 연습

ompeom 2020. 8. 28. 18:50

다른 화면으로 이동하기 버튼을 눌렀을 때 모습이다.

텍스트를 치고 메시지를 다른 화면에 전달하기 버튼을 눌렀을 때 화면이다.

<?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:padding="15dp"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/moveToOtherActivityBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="다른 화면으로 이동하기"/>
    <EditText
        android:id="@+id/messageEdt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="전달해줄 메시지 입력"
        android:singleLine="true"/>
    <Button
        android:id="@+id/sendMessageBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="메시지를 다른 화면에 전달히기"/>
</LinearLayout>
package com.gdh.intent

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)

        // 다른화면으로 이동하기 버튼이 눌리면 OtherActivity로 이동!
        moveToOtherActivityBtn.setOnClickListener {
            val myIntent = Intent(this,OtherActivity::class.java)

            startActivity(myIntent)
        }

        // 메시지 전달 버튼이 눌리면 MessageActivity로 데이터와 함께 전달!
        sendMessageBtn.setOnClickListener {
            val inputMessage = messageEdt.text.toString()
            val myIntent = Intent(this,MessageActivity::class.java)
            myIntent.putExtra("message",inputMessage)
            startActivity(myIntent)
        }
    }
}
<?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:padding="15dp"
    android:background="#000000"
    tools:context=".OtherActivity">

    <Button
        android:id="@+id/returnToMainBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="메인화면으로 복귀하기" />
</LinearLayout>
package com.gdh.intent

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

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

        // 메인 화면으로 복귀 (뒤로가기) finish()로 종료함
        returnToMainBtn.setOnClickListener {
            finish()
        }
    }
}
<?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"
    tools:context=".MessageActivity">

    <TextView
        android:id="@+id/messageTxt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="전달받은 메시지 출력 처리"
        android:textSize="20sp"/>
</LinearLayout>
package com.gdh.intent

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

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

        // 화면이 만들어질 때 => 첨부된 데이터를 받아서 => 텍스트 뷰에 반영
        val receivedMessage = intent.getStringExtra("message")

        messageTxt.text = receivedMessage
    }
}

새로운 OtherActivity와 MessageActivity를 만들었다.

다른 Activity로 전달할 때, intent를 사용한다. Intent라는 함수를 사용해서 데이터를 보내거나 화면을 전환하는 방식이다. 마지막에 startActivity()를 사용하여 액티비티를 사용한다.

 

val myIntent = Intent(this,OtherActivity::class.java)

startActivity(myIntent)

 

 

데이터를 함께 전달해야 한다면? putExtra를 사용하여 메시지를 보내준다.

val inputMessage = messageEdt.text.toString() val myIntent = Intent(this,MessageActivity::class.java) myIntent.putExtra("message",inputMessage) startActivity(myIntent)

 

데이터를 받을 때는 getStringExtra를 사용한다.

val receivedMessage = intent.getStringExtra("message")

messageTxt.text = receivedMessage