[android] Intent 사용하여 화면 이동 및 데이터 전달

Pyo·2024년 6월 6일
0

Intent

안드로이드에서 Intent는 컴포넌트 간에 작업을 수행하거나 데이터를 주고받기 위해 사용되는 메시징 객체로 안드로이드에서 화면을 전환할수있도록 한다. 즉 , 액티비티를 간 이동을 하거나 데이터를 전달하고 받을수 있도록 해준다.

데이터 전달


이동하려는 activity의 intent에 putExtra()를 이용하여 name,value값으로 넣어준후,

받는 쪽의 액티비티에서 getStringExtra()로 값을 받아오기만 하면 된다. 데이터를 보낼때의 타입에 따라서 데이터타입을 다르게 받을수도 있다.

사용방법

  1. MainActivity에서 Intent를 실행할 페이지를 버튼을 생성한다.
<?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>
  1. 이동하려는 액티비티를 Intent()에서 정의해준후 저장한다. 데이터를 전달하려는 데이터를 정의해준후, startActivity로 저장한 intent를 실행한다.
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)
        }
    }
}
  1. 전달받을 액티비티를 생성한후, 전달받은 데이터를 통해 화면을 구성해준다.
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)
    }
}

데이터 전달 완료 !!

0개의 댓글

관련 채용 정보