Skip to content

3주차 미션/2조 강민주#2

Open
kangminzu wants to merge 1 commit intoKonkuk-KUIT:mainfrom
kangminzu:kangminzu/week3
Open

3주차 미션/2조 강민주#2
kangminzu wants to merge 1 commit intoKonkuk-KUIT:mainfrom
kangminzu:kangminzu/week3

Conversation

@kangminzu
Copy link
Copy Markdown

@kangminzu kangminzu commented Apr 2, 2026

1. 미션

각 주차에 해당하는 미션 체크리스트

  • Navigation 구현
    • 홈 - 뉴스 기사 상세 스크린 연결
    • Article 객체 HomeScreen → ContactDetailScreen 으로 이동할 때 전달되게 구현
  • 뉴스 기사 상세 화면
    • UI 구현
    • 뒤로가기 버튼 기능 구현2. 구현에 대한 설명

구현에 대한 설명

  • 홈 화면과 연락처 화면에서 각각 리스트 아이템을 누르면 상세 화면으로 이동하도록 구현
  • 네비게이션은 Route를 기준으로 관리해서 홈, 연락처, 홈 상세, 연락처 상세 화면을 정의
  • MainActivity에서 NavController를 생성하고, Scaffold 안에 하단 탭과 화면 전환 영역 분리
  • MainNavHost에서 각 route에 맞는 화면을 연결해서 어떤 경로에서 어떤 화면이 보이는지 설정
  • 하단 탭은 NavTab으로 아이콘, 라벨, 연결 route를 묶어서 관리했고, 현재 선택된 탭이 보이도록 처리
  • 홈 화면에서는 뉴스 리스트를 LazyColumn으로 만들고, 기사 클릭 시 상세 화면으로 넘어가게 함
  • 연락처 화면에서도 연락처 목록을 LazyColumn으로 만들고, 항목 클릭 시 상세 화면으로 이동하게 함
  • 리스트에서 상세 화면으로 데이터를 넘길 때는 savedStateHandle을 사용해서 클릭한 객체를 이동
  • 이 방식으로 데이터를 넘기기 위해 Article, Call 데이터 클래스를 Serializable로 선언
  • 홈 상세 화면은 기사 이미지, 카테고리, 제목, 본문을 보여주는 구조로 만들었고, 스크롤 가능
  • 연락처 상세 화면은 프로필 이미지, 이름, 전화번호, 버튼 UI를 포함하도록 구현
  • 상세 화면 상단에는 공통적으로 뒤로가기 버튼을 두었고, popBackStack()으로 이전 화면으로 돌아갈 수 있게 함

3. 스크린샷 & 실행영상

image image image image

Copy link
Copy Markdown

@AyoungSe0 AyoungSe0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이번 주차는 간단한 미션이었던 만큼 전체적으로 구조도 깔끔하게 너무 잘 해주셨네요 ㅎㅎ
지금은 HomeDetail 화면과 ContactDetail 화면에서 어떤 하단 탭에도 속하지 않도록 처리되어 있는데, 추후에는 상세화면에서 하단 네비게이션바를 숨김 처리하는 방식도 적용해보시면 좋을 것 같아요~!

composable(Route.CONTACT_DETAIL.route) {
// 이전 화면에서 savedStateHandle에 저장해둔 데이터를 꺼내옵니다.
val call = navController.previousBackStackEntry
?.savedStateHandle
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안전하게 article == null일 때의 처리도 해주면 좋을 것 같습니다(popBackStack() 등)

call?.let {
ContactDetailScreen(
call = it,
navController = navController
Copy link
Copy Markdown

@AyoungSe0 AyoungSe0 Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

상세 화면에 navController 전체를 넘기지 않고 onClick만 넘겨주셔도 좋을 것 같습니다~!

modifier: Modifier = Modifier
) {
val scrollState = rememberScrollState()
val imageRes = when (article.newspaper) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HomeScreen에서 중복돼서 쓰인 코드라, 함수로 만들어서 써도 좋을 것 같습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants