공부/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