안드로이드 개발 팁 #37 - 내비게이션 활용하여 프래그먼트간 이동steemCreated with Sketch.

DB Browser for SQLite 사용법

No. 36
23.03.24. (금) | Written by @dorian-mobileapp

시작하며…

4개월만에 안드로이드 개발 팁 포스팅을 다시 시작하네요. 그간 배운게 없었던 건 아닌데, 제가 게을러서 글을 못 적고 있었습니다. 이제라도 적어야죠. 이번 포스트에서는 Jetpack이 제공하는 내비게이션 라이브러리를 활용하여 프래그먼트간 이동 방법에 대해 정리해보려 합니다.


가정

  • 프로젝트에 바텀 내비게이션 액티비티가 현재 추가 되어 있음
  • F1: 이동을 실행할 프래그먼트
  • F2: 이동할 프래그먼트
  • 내비게이션 XML 파일에는 F1 프래그먼트가 이미 추가되어 있음

방법 개요

  • 내비게이션 XML 파일에 이동할 프래그먼트 추가
  • 프래그먼트 이동 구현

내비게이션 XML 파일에 이동할 프래그먼트 추가

(1) 현재 개발 중인 모듈(프로젝트 생성 직후에는 app 모듈만 있음)에 이동할 프래그먼트 F2 추가

(2) 내비게이션 XML 파일에 F2 요소 추가

  • android:id - 프래그먼트 고유 아이디
  • android:name - 프래그먼트의 패키지 및 클래스 이름
  • android:label - 사용자가 식별할 수 있는 이름 (내비게이션에 직접적 영향은 없음)
  • tools:layout - 내비게이션 파일의 디자인 화면에서 보여줄 프래그먼트의 레이아웃
<fragment
    android:id="@+id/navigation_f2"
    android:name="lee.dorian.sample.F2Fragment"
    android:label="F2"
    tools:layout="@layout/fragment_f2">
</fragment>

(3) 내비게이션 XML 파일의 F1 프래그먼트 요소 안에 action 요소 추가

  • android:id - 액션 식별용 아이디
  • app:destination - 이동할 프래그먼트의 아이디
<fragment
    android:id="@+id/navigation_f1"
    android:name="lee.dorian.sample.F1Fragment"
    android:label="F1"
    tools:layout="@layout/fragment_f1">
    <action
        android:id="@+id/action_navigation_f1_to_navigation_f2"
        app:destination="@id/navigation_f2" />
</fragment>

프래그먼트 F1에서 이동 실행 코드 작성

아래 코드는 버튼 클릭시 F2 프래그먼트로 이동 실행

private val sampleOnClickListener = View.OnClickListener {
    val navController = findNavController()
    val action = F1FragmentDirections.actionNavigationF1ToNavigationF2()
    navController.navigate(action)
}

참고 링크


지난 안드로이드 개발 팁


Layout provided by Steemit Enhancer hommage by ayogom
Sort:  

안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.


안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.05
TRX 0.33
JST 0.078
BTC 63144.83
ETH 1685.61
USDT 1.00
SBD 0.39