이 글은 이것이 안드로이드다 with 코틀린(개정판)를 참고하여 작성하였습니다.
작성자 : 정현민
개발환경은 Windows, Android Studio입니다.
1. Entry Point
Android는 manifest 폴더에 시작점(entry point)를 가진다.
프로젝트 시작 -> main activity tag 생성->intent filter로 action.Main이 지정됨(=Android의 entry point)
activity 중에서도 onCreate가 시작점이 된다.


-Activity Name
-Generate a Layout File ✔-xml 파일 형성
-Launcher activity ✔- Main Activity의 entry point로 설정
2. 액티비티값 주고받기
1) MainActivity to SubActivity로의 화면전환 기능(Intent)
val binding by lazy {ActivityMainBinding.inflate(LayoutInflater)}
-binding을 만들어주기 위한 코드
val intent = Intent(this, SubActivity::class.java);
startActivity(intent);
-setOnClickListener 아래에서 작성
2) MainActivity to SubActivity로의 값 전달 기능
//MainActivity
intent.putExtra(name:"from1", value: "Hello Bundle")
intent.putExtra(name:"from2", value: 2021)
//SubActivity
with(binding) {this:ActivitySubBinding
to1.text = intent.getStringExtra(name:"from1")
to2.text = ${intent.getIntExtra(name:"from2", defaultValue:0)}
}
(전달해야할 value가 여러 개인 경우, binding을 with로 묶는 것이 나음)
✔입력할 땐(putExtra), type을 지정하지 않아도 되지만, 출력할 땐(getExtra), type을 지정해야 함.
✔Int type은 Value값이 정해져 있지 않을 때를 대비해, defaultValue:0을 지정해줘야 함
3) SubActivity를 종료+MainActivity에 값 되돌리는 기능
//MainActivity
startActivityForResult(intent, requestcode:99)
-SubActivity를 호출하는 코드
✔startActivityForResult는 intent와 requestcode를 가진다.
✔requestcode: 버튼이나 액티비티가 여러 개일 때, 구별을 위해 넣어주는 값
//SubActivity
btnClose.setOnClickListener{it:View!
val returnIntent = Intent()
val message = editMessage.text.toString()
returnIntent.putExtra(name:"returnValue",message)
setResult(Activity.RESULT_OK, returnIntent)
finish()
}
-btnClose가 click됐을 때, 종료하는 코드
✔빈 intent 생성 ->값을 담아서 returnIntent
✔완성된 intent를 setResult 코드에 담고 RESULT_OK를 통해 정상적으로 종료됐음을 MainActivity측에 전달
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?){
super.onActivityResult(requestCode, resultCode, data)
if(resultCode==Activity.RESULT_OK){
when(requestCode) {
99->{
data?.getstringExtra(name: "returnValue")?.let(message ->
Toast.makeText(context this, message, Toast.LENGTH_SHORT).show()
}
}
}
}
-SubActivity에서 finish()이후 MainActivity로 넘어와 onActivityResult를 호출하는 코드
✔message를 꺼내기 위해 returnValue 사용
✔let을 사용하여 returnValue값이 있을 때만 message 꺼냄
✔requestCode가 하나만 있을 경우, if 사용가능
'GDSC HUFS 3기 > Android with Kotlin Team 4' 카테고리의 다른 글
| [4팀]14-4. 화면 구성하기:리사이클러뷰 (0) | 2021.11.08 |
|---|---|
| [4팀]14-2~3. 화면구성하기:스피너 (0) | 2021.11.08 |
| [4팀] 12~16. 레이아웃, 리스너, 버튼과 스트링 소스, Dimen 리소스, color 리소스, 텍스트뷰 (0) | 2021.10.30 |
| [4팀] 11. (2) Kotlin을 위한 기본 문법 : 화면에 그려지는 디자인 요소 위젯 (0) | 2021.10.29 |
| [4팀] 11. (1) Kotlin을 위한 기본 문법 : 스코프 함수 (0) | 2021.10.26 |