[3팀] 8.액티비티 값주고받기 뷰바인딩
이 글은 이것이 안드로이드다 with 코틀린(개정판)를 참고하여 작성하였습니다.
작성자 : 심덕수
개발환경은 Windows, Android Studio입니다.
1.프로그램의 ‘Entry Point(시작점)’ 알기
-> 안드로이드의 경우 manifest에 있다. (더 상세하게는 onCreate에서 시작된다.)
2.서브 엑티비티 만들기
-> Generate a Layout File을 해제하면 layout file을 수동으로 만들어서 사용하면 된다.
-> 네이밍 규칙 : 앞에 자동으로 activity을 붙여줘서 Activity Name의 맨 뒤에 Activity을 붙인다면 Layout Name에는 생략된다.
-> 만약 Launcher Activity에 체크를 한다면 subActivity가 시작점이 되어 manifest의 <intent-filter>가 subActivity 사이에 위치하게 된다. *액티비티 이름은 refector에서 rename가능하다.
*주의
-> id rename을 할 때 ‘Current File’로 해야 현재 파일에서만 영향을 미치게 할 수 있다.
Intent 변수에 subActivity을 담아서 startActivity에 intent를 담아서 실행하면 이렇게 버튼을 누르면 서브 엑티비티를 실행하게 할 수 있다.
3.메인 엑티비티에서 서브 엑티비티로 값 전달하기
Intent의 putExtra함수를 이용해서 값을 전달한다.
-> bundle이라고 하는 이유는 intent에 값을 담는데 값이 담기는 공간이 bundle이라는 클래스로 정의가 되어 있다.
-> putExtra함수는 value값에 어떤 타입을 넣느냐에 따라 타입이 자동으로 결정된다.
-> 하지만 꺼낼 때는 타입을 지정해서 꺼내야한다.
4. SubActivity code
-> 서브 엑티비티는 with 스코프 함수를 사용해서 binding을 사용해 값을 받아오는데 앞에 말했듯이 value값의 타입을 지정해서 꺼내야한다. (getStringExtra, getIntExtra)
-> text에는 int값이 바로 들어올 수 없으므로 문자열 템플릿을 사용해 감싸줘야한다.
5. 서브엑티비티에서 종료하면서 메인엑티비티로 값을 돌려주기
startActivityForResult -> 호출하는 엑티비티에서 결과값을 받겠다.
-> requestCode : 위젯들이 모두 다 결과값을 받는 형태일 수도 있기 때문에 내가 호출한 위치를 확인하기 위해서 요청 코드를 사용.
6. SubActivity.kt
#MainActivity.kt
-> 서브 엑티비티가 finish()되면 result_ok와 requestcode 비교 후에 토스트 메세지를 띄우며 메인엑티비티로 값을 돌려준다.