회원가입, 로그인 구현 끝

남궁현·2023년 8월 3일
0

Android

목록 보기
4/15
post-thumbnail

과제 끝

  • 다음 주 금요일이 과제 제출일인데 오늘 끝내버렸다. 시간이 널널해진만큼 코루틴과 쓰레드, 그리고 viewBinding, DataBinding 공부를 다시 해야겠다.

랜덤 이미지 출력

  • 먼저 drawble에 있는 image를 배열에 담아준다.
  • 랜덤으로 이미지를 지정해줄 변수를 만들어준다.
  • 랜덤 함수를 사용해서 0 ~ image.size 사이에서 랜덤한 정수를 얻은 후 nextInt로 반환한다.
  • 이미지 소스 id를 변수에 저장한 후 setImageResource()로 imageView의 설정해서 mainActivity에서 Log in 버튼이 눌릴 때마다 랜덤으로 imageView의 다른 사진이 들어간다.

Focus 자동 이동

  • 요구 기능 사항에는 없었지만 우리 팀장님이신 현민님이 따로 내주신 과제다.

  • when문을 사용하여 EditText가 isBlank일 때 requestFocus()를 통해 focus가 자동 이동된다.

registerForActivityResult

공식문서

  • Activity 또는 Fragment에 있을 때, Activity Result API에서 제공하는 registerForActivityResult() API를 통해서 결과 콜백을 등록할 수 있다.

  • 여기서 registerForActivityResult()는 ActivityResultContract와 ActivityResultCallback을 가져와서 다른 activity를 실행하는 데 사용할 ActivityResultLauncher를 반환한다.

  • ActivityResultContract는 우리가 결과를 생성하는 데 필요한 입력의 형태와 결과를 출력하는 형태를 정의하고 우리가 intent를 사용하는 작업의 기본적인 계약을 제공한다.

MainActivity.kt

  • callback 선언(callback : 이벤트가 발생하면 특정 메서드를 호출해 알려준다(1개))

  • registerForActivityResult 메소드를 활용해서 ActivityLauncher를 만든다.

  • Parameter는 ActivityResultContract, ActivityResultCallback이 필요하다

  • ActivityResultContract는 startActivityForResult 등 다양한 계약 객체들이 있다. 구글링 해서 원하는 방식으로 사용하도록! 이라 말하지만 나도 잘 모른다. 나도 구글링했다고....

  • ActivityResultCallback 람다를 사용하는 경우, ActivityResult 객체가 람다의 파라미터로 전달된다.

  • intent와 result Code를 사용해서 원하는 데이터를 가져오면 된다.

  • 안드로이드에서 액티비티 간에 결과를 주고받을 때 사용하는 resultCode는 정수 값을 가진다. 성공과 실패를 구분하기 위해 약속된 값을 사용한다.

  • RESULT_OK: 액티비티가 성공적으로 완료되었음을 나타내는 값으로, 정수 값으로는 보통 -1로 사용된다. 이 코드는 액티비티의 작업이 성공적으로 마무리되었음을 나타낸다.

  • resultLauncher.launch()를 통해 데이터를 받아올 activity를 실행한다.
    그리고 setResultNext()를 따로 호출을 안해줬을 땐 데이터가 안넘어와서 onCreate()에다가 호출해봤는데 데이터가 넘어왔다.

JoinMembership.kt

  • 현재 액티비티에서 "ID"와 "Pass" 데이터를 Intent에 담아서 설정하고 RESULT_OK 결과 코드와 함께 액티비티를 종료하여 이전 액티비티로 데이터를 전달하는 동작을 수행한다. 이후에 호출한 액티비티에서 onActivityResult를 사용하여 데이터를 가져올 수 있다.

  • onActivityResult : 안드로이드 액티비티(Activity)에서 다른 액티비티를 호출하고, 호출된 액티비티로부터 결과를 받아 처리하는 콜백 메서드

profile
신입 안드로이드 개발자

0개의 댓글