1. 데이터 전달
- 인텐트에 컴포넌트 실행을 요청할 때 데이터를 함께 전달하려면 엑스트라 데이터(인텐트에 담는 부가정보) 이용
- 이름과 값의 쌍으로 된 정보를 전달
2. Extras에 값을 저장하는 메소드
Intent putExtra(String name, int value)
Intent putExtra(String name, String value)
Intent putExtra(String name, boolean value)
3. Extras에 저장된 값을 읽는 메소드
int getIntExtra(String name, int defaultValue)
String getStringExtra(String name)
boolean getBooleanExtra(String name, boolean defaultValue)
(데이터 입력받고 세번째 액티비티에 데이터 전달하는 코드)
1) activity_first.xml에서 코드 추가
(데이터를 입력받을 수 있는 EditText 위젯과 세번째 액티비티를 호출할 Button 위젯을 수평으로 배열시키는
LinearLayout 추가)
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/edit_data"
android:layout_weight="1"
android:hint="데이터 입력"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="세번째 액티비티에 데이터 전달"
android:id="@+id/buttonThirdActivity"/>
</LinearLayout>
2) FirstActivity.kt 파일에 세 번째 액티비티 시작시키기 위한 명시적 인텐트 객체 생성 코드 추가해주기
(해당 버튼이 클릭되었을 때 인텐트 객체 생성, id가 edit_data인 EditText 객체에 입력된 문자열 가져와서
이를 앞에서 생성한 인텐트 객체의 Extra에 "dataFromFirstActivity" 이름으로 설정,
startActivity() 의 파라미터로 인텐트 객체 전달)
//명시적 인텐트
val btn_call3 = findViewById<Button>(R.id.buttonThirdActivity)
btn_call3.setOnClickListener {
//id가 edit_data인 EditText 객체
val edit_text = findViewById<EditText>(R.id.edit_data)
//그 객체 안에 입력된 문자열 값을 가져옴
val strData = edit_text.text.toString()
//인텐트 객체 생성 (세번째 액티비티를 여기서 실행할거다)
val intent = Intent(this, ThirdActivity::class.java)
//가져온 문자열 값을 앞에서 생성한 인텐트 객체의 Extra에 설정 (이름은 dataFromFirstActivity로 설정)
intent.putExtra("dataFromFirstActivity",strData)
//startActivity()의 파라미터로 인텐트 객체 전달
startActivity(intent)
}
3) activity_third.xml 파일 수정
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".ThirdActivity"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="세번째 액티비티입니다."
android:id="@+id/textView2"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:inputType="text"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="닫기"
android:id="@+id/buttonThirdActivity"/>
</LinearLayout>
4) ThirdActivity.kt 파일에 코드 추가
(ThirdActivity로 전달된 데이터를 Extra에서 가져와 EditText뷰에 표시)
(버튼이 클릭되면 finish() 메소드 호출해 현재의 액티비티 종료되는 버튼 클릭 이벤트 처리기 추가)
package com.example.acrivityintent2
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
class ThirdActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_third)
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
}
//"dataFromFirstActivity" 는 키값. 키값으로 데이터를 받아오는 것
val strData = intent.getStringExtra("dataFromFirstActivity")
val editText = findViewById<EditText>(R.id.editText)
//set -> 받아온 데이터를 넣어줌. (뿌려줌?)
editText.setText(strData)
val btn_close = findViewById<Button>(R.id.buttonThirdActivity)
btn_close.setOnClickListener {
finish()
}
}
}
'Android Studio' 카테고리의 다른 글
안드로이드 스튜디오 TTS 관련 코드 (0) | 2024.04.08 |
---|---|
[Android 앱개발 입문] 액티비티 생명주기 (# 추가하기) (0) | 2024.03.21 |
[Android 앱개발 입문] Intent (# 추가하기) (0) | 2024.03.20 |
[Android 앱개발 입문] 액티비티 (# 추가하기) (0) | 2024.03.20 |
[Android Studio] Margin, Padding, Gravity, 스타일 및 테마 (# 추가하기) (0) | 2024.03.19 |