[Android/Kotlin] #Activity간 데이터 전달
2022. 4. 6. 22:40
728x90
반응형
💡 개요
Android 앱을 제작하다 보면 Activity를 이동할 때 값을 전달해줘야 하는 경우가 있다.
그럴 경우 어떻게 하면 값을 전달할 수 있는지 예제를 통해 알아보고자 한다.
💡 방법
일단은 보내고자 하는 Activity에서 Intent를 먼저 생성해야 한다.
그 후 putExtra()를 통해 해당하는 Intent로 데이터를 전달할 수 있다.
// Intent 생성
val intent = Intent(this, SubActivity::class.java)
// "str"은 key값, str은 value
intent.putExtra("str", str)
데이터를 받는 Activity에선 별도의 Intent를 생성하지 않아도 getStringExtra()를 이용해 데이터를 받을 수 있다.
// Intent로부터 값을 가져온다
val str = intent.getStringExtra("str")
💡 예제
[activity_main.xml] : 입력할 수 있는 EditText와 SubActivity로 이동할 수 있는 Button을 생성
<?xml version="1.0" encoding="utf-8"?>
<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">
<EditText
android:id="@+id/etMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="50sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btnSub"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
android:text="SubActivity로 전달"
android:textSize="20sp">
</Button>
</androidx.constraintlayout.widget.ConstraintLayout>
[activity_sub.xml] : MainActivity에서 받은 입력값을 뿌려주기 위한 TextView 생성
<?xml version="1.0" encoding="utf-8"?>
<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/tvSub"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="hint"
android:textSize="50sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
[MainActivity]
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.EditText
class MainActivity : AppCompatActivity() {
// activity_main.xml의 EditText를 가지는 변수
private lateinit var etMain: EditText
// activity_main.xml의 Button을 가지는 변수
private lateinit var btnSub: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Layout과 mapping
etMain = findViewById(R.id.etMain)
btnSub = findViewById(R.id.btnSub)
// Button을 클릭했을 때
btnSub.setOnClickListener {
// EditText에서 문자열을 가져오고
val str = etMain.text.toString()
// Intent를 생성하고
val intent = Intent(this, SubActivity::class.java)
// Intent로 값을 전한다.
intent.putExtra("str", str)
// Intent 실행
startActivity(intent)
}
}
}
[SubActivity]
import android.os.Bundle
import android.os.PersistableBundle
import android.util.Log
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class SubActivity : AppCompatActivity() {
// activity_sub.xml의 TextView
private lateinit var tvSub : TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sub)
// Intent로부터 값을 가져온다
val str = intent.getStringExtra("str")
// 가져온 값을 TextView에 뿌린다
tvSub = findViewById(R.id.tvSub)
tvSub.text = str
}
}
💡 결과 화면
Hello World를 입력 후 버튼을 클릭하면 SubActivity에서 데이터를 잘 받는 것을 알 수 있다.
728x90
반응형
'Android > Kotlin' 카테고리의 다른 글
[Android/Kotlin] #Fragment 사용법 (0) | 2022.06.07 |
---|---|
[Android/Kotlin] #TedPermission을 이용한 권한 관리 (1) | 2022.04.20 |
[Android/Kotlin] #View Binding 사용법 (0) | 2022.04.08 |
[Android/Kotlin] #RecyclerView 사용법 (2) (0) | 2022.04.07 |
[Android/Kotlin] #RecyclerView 사용법 (1) (1) | 2022.04.07 |