0101011001010111

[질문]Android4-2_ Intent란? 액티비티간의 데이터 전달 본문

Kotlin/안드로이드_[입문]앱개발

[질문]Android4-2_ Intent란? 액티비티간의 데이터 전달

[진주] 2023. 8. 18. 20:55
728x90
반응형

01.❓데이터 전달은 어떻게 될까?

  • 인텐트에 컴포넌트 실행을 요청할 때 데이터를 함께 전달하려면 엑스트라 데이터를 이용.
  • 엑스트라 데이터는 인텐트에 담는 부가 정보라 할 수 있습니다.
  • Extras를 활용하여 이름과 값의 쌍으로된 정보를 전달

 

Extras에 값을 저장하는 메소드

  Intent putExtra(String name, int value)

  Intent putExtra(String name, String value)

  Intent putExtra(String name, boolean value)

 

Extras에 저장된 값을 읽는 메소드

  int getIntExtra(String name, int defaultValue)

  String getStringExtra(String name)

  boolean getBooleanExtra(String name, boolean defaultValue)

 

 

activity_first.xml

<?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=".FirstActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="첫번째 액티비티입니다."
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:text="두번째 액티비티 시작하기!"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

    <Button
        android:id="@+id/buttonDialActivity"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:onClick="doOnBtnClick"
        android:text="다이얼 작업 시작하기"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btn1" />

    <Button
        android:id="@+id/buttonMapAcitivity"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:onClick="doOnBtnClick"
        android:text="지도보기 작업 시작하기"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/buttonDialActivity" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:orientation="horizontal"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/buttonMapAcitivity">

        <EditText
            android:id="@+id/edit_data"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="데이터 입력" />

        <Button
            android:id="@+id/buttonThirdActivity"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="세번째 액티비티에 전달" />

    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>


 

  • “세번째 액티비티에 데이터 전달” 버튼이 클릭 되었을 때,
  • 세번째 액티비티를 시작시키기 위한 명시적 인텐트 객체를 생성
  • id가 edit_data인 EditText 객체에 입력된 문자열 값을 가져와서 이를 앞에서 생성한 인텐트 객체의 Extra에 설정 (이름은 “dataFromFirstActivity”로 지정)
  • startActivity()의 파라미터로 인텐트 객체 전달

 

 

ThirdActivity

 

import android.os.Bundle
import android.widget.Button
import android.widget.EditText



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

        val strData = intent.getStringArrayListExtra("dataFromFirstActivity")
        val editText = findViewById<EditText>(R.id.editText)
        editText.setText(strData)

        val btn_close = findViewById<Button>(R.id.buttonThirdActivity)
        btn_close.setOnClickListener {
            finish()
        }
    }
}

너어는 왜그러니 ㅠ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형