안드로이드에서 Intent는 컴포넌트 간에 작업을 수행하거나 데이터를 주고받기 위해 사용되는 메시징 객체로 안드로이드에서 화면을 전환할수있도록 한다. 즉 , 액티비티를 간 이동을 하거나 데이터를 전달하고 받을수 있도록 해준다.
이동하려는 activity의 intent에 putExtra()를 이용하여 name,value값으로 넣어준후,
받는 쪽의 액티비티에서 getStringExtra()로 값을 받아오기만 하면 된다. 데이터를 보낼때의 타입에 따라서 데이터타입을 다르게 받을수도 있다.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Main"
android:textColor="@color/black"
android:textSize="50sp"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:text="intent"
android:id="@+id/intentBtn"
android:layout_margin="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/textView2" />
</androidx.constraintlayout.widget.ConstraintLayout>
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
findViewById<Button>(R.id.intentBtn).setOnClickListener{
val intent = Intent(this,IntentTestActivity::class.java)
intent.putExtra("value1", "android play")
intent.putExtra("value2","2024-06-06")
startActivity(intent)
}
}
}
class IntentTestActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_intent_test)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
val value1 = intent.getStringExtra("value1")
val value2 = intent.getStringExtra("value2")
findViewById<TextView>(R.id.value1).setText(value1)
findViewById<TextView>(R.id.value2).setText(value2)
}
}
데이터 전달 완료 !!