이 글은 이것이 안드로이드다 with 코틀린(개정판)를 참고하여 작성하였습니다.
작성자 : 강현우
개발환경은 Windows, Android Studio입니다.
1. 액티비티를 위해 알아야 할 것
- Entry Point(시작점)
우선 모든 프로그램은 시작점(entry point)라는 것을 가지고 있다. 안드로이드의 경우에는 Manifest에 지정이 되어있다. Entry Point는 주로 MainActivity의 onCreate 함수에 있다.
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
위 코드에서 보이듯이 프로그램을 처음 만들고 manifest에 들어가서 확인해보면, MainActivity안에 MAIN이라는 action filter가 있다.
MainActivity가 아니라 다른 액티비티를 entry point로 하고 싶은 경우에는 intent-filter를 옮겨주면 된다.
android:name=".SubActivity"
android:exported="false" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
- Manifest
Manifest라는 것은 XML 파일로, 안드로이드 앱에 관한 중요한 metadata를 가지고있는 것이다. metadata에는 패키지 이름, 액티비티 이름, main activity(앱의 시작점), 안드로이드 OS 등등을 포함하고 있다.
2. 액티비티
액티비티라는 것은 안드로이드 개발에 있어서 가장 기초적인 구성요소이다. 액티비티는 어플리케이션의 이용자가 어플리케이션과 작용할 수 있는 스크린을 제공한다.
- subactivity 만들기
java(우클릭)->new-> activity를 하면 subactivity를 만들 수 있다.
- main activity 와 sub activity를 연동시키기
main에서 sub로 넘기기: putExtra(id,내용)
binding.btnStart.setOnClickListener {
val intent = Intent(this, SubActivity::class.java)
intent.putExtra("from1","Hello Bundle")
intent.putExtra("from2", 2021)
startActivity((intent))
}
여기서 putExtra("id","내용")을 쓴 이유는 MainActivity에 있는 btnStart를 눌렀을때 SubActivity로 내용들을 보내기 위해서 사용한다.
putExtra에서는 내용의 데이터타입을 따로 설정해 줄 필요가 없다. 예를 들어 "Hello Bundle"을 사용하면 putExtra가 자체적으로 데이터타입을 String으로 설정하는 것을 알 수 있다.
이제 내용을 보냈으니 내용을 뽑아내는 것을 코드로 볼 순서이다.
with(binding){
to1.text = intent.getStringExtra("from1")
to2.text= "${intent.getIntExtra("from2",0)}
관리해야할 위젯이 많은 경우에는 스코프(with) 함수로 묶는게 더 편하다.
getExtra는 putExtra와는 다르게 데이터타입을 직접 설정해야한다. 그래서 위와 같이 getIntExtra처럼 중간에 설정한다. getIntExtra는 다른 getExtra와 다르게 두개의 파라미터를 같는다. 첫번째는 무엇을 가져오는지이지만, 두번째는 디폴트값이다.
여기서 .text는 정수값을 받을 수 없기 때문에 ${}으로 문자열 처리해준다.
SubActivity에서 종료하면서 MainActivity로 값을 돌려주기
startActivityForResult(intent,99)
startActivity와는 다르게, startActivityForResult는 요청코드를 입력해야한다. 여기서 requestcode즉 요청코드는 특정지어주는 도움을 준다.
btnClose.setOnClickListener {
val returnIntent = Intent()
val message = editMessage.text.toString()
returnIntent.putExtra("returnValue",message)
setResult(Activity.RESULT_OK,returnIntent)
finish()
subactivity에서 finish()가 되면, result_ok와 requestcode 비교 후에 토스트 메세지를 띄우며 메인엑티비티로 값을 돌려준다.
'GDSC HUFS 3기 > Android with Kotlin Team 1' 카테고리의 다른 글
[1팀] 14-4. 화면 구성하기: 리사이클러뷰 (0) | 2021.11.16 |
---|---|
[1팀] 14-2. 화면 구성하기 : Spinner (1) | 2021.11.16 |
[1팀] 11-8~10. 화면에 그려지는 디자인 요소 위젯: 프로그래스바, 시크바, 레이팅바 (0) | 2021.11.16 |
[1팀] 11-4~7. 화면에 그려지는 디자인 요소 위젯: 에딧텍스트, 라디오그룹&버튼, 체크박스, 토글 버튼&스위치 (0) | 2021.11.16 |
[1팀] 12~16. 리스너,위젯들의 특성 이해하기 (0) | 2021.10.26 |