먼저 데이터 바인딩을 통해 xml 파일의 각각의 버튼을 불러오게 해보고 싶어서 이 과정 전에
https://developer.android.com/topic/libraries/data-binding?hl=ko 이곳을 참고하여 데이터 바인딩을 해보았다.
액티비티란 안드로이드 어플에서 가장 기본적이고 필수적인 구조 중 하난데 화면을 띄우기 위해서, 다른 데이터들을 주고받기 위해서 사용하는 거 같다.. 자세히는 모르겠다.
먼저 startActivity()라는 메서드를 쓸 경우 단순하게 액티비티를 띄어주는 역할을 하는데, 어플을 사용할 경우 한 엑티비에서의 사용자의 응답을 다음 액티비티에 넘기는 경우가 많이 생긴다.
이런 경우에는 startActivirtForResult()를 사용한다고 한다.
우선 startActivity를 사용하여 액티비티의 전환해보자
1. 기본 mainactivity에 버튼들을 설정하여 'ACT 기본'이라는 버튼을 눌릴 경우 새로운 액티비티가 화면에 등장하도록 하자!
1) 먼저 2개의 액티비티 파일과 2개의 XML 파일을 만들어 준다
기본이 되는 액티비티의 이름은 mainActivity로 설정하고
버튼을 통해서 전환이 되는 액티비티는 버튼 b1을 통해서 가니까 b1activity로 설정한다.
액티비티 파일.kotlin
각각의 xml파일
2) 각각의 xml을 설정하여 전환하는 버튼을 만들어 주자!
xml 파일 형태
혼자서 다른 거 구현해 본다고 다양한 버튼을 만들게 되었는데.. 여기선 저기 ACT 기본이라는 버튼만 사용해 보자!
3) 코틀린 파일에서 버튼을 지정해주고 버튼을 통해 startactivity가 작동하도록 코틀린 파일을 만든다
mainactivity.kotlin
데이터 바인딩을 하여 사용하는 방법은 위와 같다!
println과 log.e를 사용한 이유는 생명주기가 어떻게 되는지 확인해보기 위해서 사용했음
binding.b1.set~~을 사용하여 b1이라는 버튼을 클릭할 시의 이벤트를 처리해준다.
b1activity.kotiln
b1activity도 버튼을 클릭하면 종료가 되는 형태로 만들어준다.
4) 결과 확인
mainactivity는 ACT 기본이라는 버튼을 누르면 b1activity가 작동하게 되면서 onstop이 된다.
b1activity에 finish라는 메서드를 사용할 경우 돌아가기라는 버튼을 누르면 b1activity는 destroy가 되고 mainactivity는 onresume으로 돌아감
여기서 b1activity에 finish가 아닌 startactivity를 사용하면 b1activity도 destroy가 아닌 onstop 상태로 mainactivity가 재개되는 것을 확인할 수 있다.
apptheme을 ~.Dialog를 통해 새로 뜨는 activity를 꽉 찬 화면이 아닌 상태로 설정할 시에는 mainactivity가 onstop이 아닌 onpause 상태로 정지한다.
2. startactivityforresult를 사용해서 activity 화면 전환해보기!
1) 새로운 버튼을 표현하기 위해서 하나의 버튼을 추가했다.
응답을 주고받는 activity버튼만든거
2) 메인 activity에 추가한 버튼에 대한 리스너 만들기
버튼에 대해서 엑티비티가 호출되게 만듬
3) 메인 activity에 추가로 호출과 결과 등의 반응에 따른 반응 만들어주기. 자세히는 모르겠는데 여기에 다양한 응답을 만들어 주면 다양하게 쓸 수 있을 것 같다!
4) 추가로 넣은 b13에 대한 액티비티를 이런 식으로 만들어 준다, 엑티비티에 되돌아가는 버튼을 구현해주고, intent에 putextra를 사용해서 정보를 추가? 해주는 거 같다. 나중에 intent에 대해서 알아볼 필요가 있을 거 같음 ..
그래서 결과적으로 result_ok라는 코드(-1)와, intent를 내보내게 되고 종료되게 만든 거
5) 그러므로 버튼에 의해서 result_ok라는 코드가 들어오므로
응답으로 전달된 name: mike라는 메시지가 토스트 된다!
아직 그냥 따라만 해봐서 잘 모르겠는데 좀 더 많이 공부해야겠다.
'두잇 안드로이드 따라하기' 카테고리의 다른 글
2.프레그먼트 띄워보고 종료해보기!....1 (1) | 2019.11.17 |
---|