일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- intent
- permission
- layout
- block scope
- Anko SQLite
- 안드로이드
- .kt
- function scope
- Retrofit2
- props
- android
- Eclipse
- component
- Anro Coroutines
- ReactDOM
- vim
- Kotlin
- java
- RecyclerView
- LinearLayout
- cardview
- http
- ViewGroup
- react
- linux
- view
- ConstraintLayout
- javascript
- Git
- RelativeLayout
- Today
- Total
이것저것 다 개발
[Android] startActivityForResult 본문
Activity로부터 결과 가져오기 - startActivityForResult
startActivityForResult는 이동된 Activity로부터 값을 가져올때 쓸 수 있습니다.
A Activity에서 B Activity를 호출하게 되었을 때, B Activity에서 A Activity로 데이터를 전달할 수 있습니다.
일반적으로 startActivity(intent) 메소드를 통해 Intent 데이터를 담아 다음 Activity로 이동과 데이터를 전달합니다.
startActivityForResult는 A에서 이동한 B Activity가 종료되면서 다시 A로 데이터를 보내는 방식입니다.
startActivityForResult(Intent, requestCode) 로 다음 Activity를 호출하고
onActivityResult() 라는 override 메소드에서 결과를 받습니다.
간단한 글쓰기를 예시로 만들어봤습니다.
MainAcitivity.kt
btn_write.setOnClickListener {
val intent = Intent(this, WriteActivity:: class.java)
startActivityForResult(intent, 100);
}
다음과 같이 버튼을 클릭했을 때 intent와 requestCode인 100을 넣어 WriteActivity로 이동하게 만들었습니다.
MainActivity.kt
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
when (requestCode) {
100 -> {
tv_title.visibility = View.VISIBLE
tv_contents.visibility = View.VISIBLE
tv_title.text = data!!.getStringExtra("title").toString()
tv_contents.text = data!!.getStringExtra("contents").toString()
}
}
}
}
이렇게 resultCode로 RESULT_OK를 받게되면 그에따른 requestCode 값에 맞게 동작합니다.
WriteActivity.kt
btn_save.setOnClickListener {
val intent = Intent()
intent.putExtra("title", et_title.text.toString())
intent.putExtra("contents", et_contents.text.toString())
setResult(Activity.RESULT_OK, intent)
finish()
}
WriteActivity에서는 2개의 EditText를 사용하여 Title과 Contents 값을 받아서 값을 넣어주고
setResult()를 호출하여 RESULT_OK와 값이 담긴 intent를 넣어주었습니다.
finish() 호출로 Activity가 종료되면서 다시 MainActivity로 돌아오게되고
이때 MainActivity의 onActivityResult가 동작하게 됩니다.
'Android' 카테고리의 다른 글
[Android] Flavor 사용하기 (빌드 변형 구성) (0) | 2019.01.09 |
---|---|
[Android] ProgressDialog 사용하기 (0) | 2018.07.13 |
[Android] ConstraintLayout (0) | 2018.06.12 |
[Android] OpenWeatherMap 날씨 API 사용 앱 만들기 (14) | 2018.05.28 |
[Android] Retrofit2 사용해보기 (2) | 2018.05.25 |