250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- data
- TEST
- 앱바
- Coroutines
- Kotlin
- Button
- textview
- tabbar
- Dialog
- drift
- appbar
- textfield
- activity
- android
- viewmodel
- LifeCycle
- DART
- Flutter
- Navigation
- binding
- 테스트
- 안드로이드
- scroll
- Compose
- 계측
- livedata
- 앱
- intent
- CustomScrollView
- ScrollView
Archives
- Today
- Total
Study Record
[안드로이드] Activity 시작하기 본문
728x90
😶 Activity 시작하기
Android 에서 새로운 Activity 를 시작하려면 startActivity 함수를 사용한다. 이 함수에는 Intent 를 매개 변수로 받는데 Intent 에는 새로 시작할 Activity 에 대한 정보와 따로 전달할 데이터를 포함한다.
val intent = Intent(context, DetailActivity::class.java).apply {
putExtra("INTENT_DATA_STR", "test value"),
putExtra("INTENT_DATA_INT", 4)
}
context.startActivity(intent)
😶 Activity 에서 데이터 받기
Activity 를 시작할 때 intent 의 putExtra 함수로 데이터를 전달했다. 이 데이터를 해당 Activity 에서 받는 방법은 intent.extras 값으로 타입은 Bundle 로 받을 수 있다.
val valueString = intent.extras?.getString("INTENT_DATA_STR")
val valueInt = intent.extras?.getInt("INTENT_DATA_INT")
😶 companion object 활용하기
Activity 사이의 데이터 교환시 putExtra() 함수에서 key 값을 하드코딩된 값으로 사용하는 것은 권장하지 않는다. 프로젝트가 커지고 이런 값들이 많아질수록 관리하기 어려워지기 때문이다.
여기서 companion object 를 사용하면 클래스의 특정 인스턴스 없이 단일 인스턴스만 존재하게끔 할 수 있다. 따라서 companion object 에 해당 key 값을 정의하고 외부 Activity 에서 엑세스할 수 있도록 한다.
class TestActivity() : AppCompatActivity() {
companion object {
const val DATA_KEY = "DATA_KEY"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val data = intent.extras?.getString(DATA_KEY) ?: "Data"
}
}
Activity 시작하는 코드가 있는 쪽에서는 해당 Activity 에 정의된 key 값을 사용한다.
class MainActivity() : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
/* */
}
fun startTestActivity() {
val intent = Intent(context, DetailActivity::class.java).apply {
putExtra(TestActivity.DATA_KEY, "test value")
}
startActivity(intent)
}
}
728x90
'안드로이드' 카테고리의 다른 글
[안드로이드] Dialog 정리 (0) | 2023.07.26 |
---|---|
[안드로이드] 메뉴 만들기 (0) | 2023.07.20 |
[안드로이드] 계측 테스트 참고 (0) | 2023.07.18 |
[안드로이드] 간단한 단위 테스트 실행해보기 (0) | 2023.07.18 |
[안드로이드] 어노테이션 (0) | 2023.07.18 |