일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자바
- 안드로이드강좌
- 안드로이드
- 회고
- 알게되는
- 병렬프로그래밍
- 안드로이드스튜디오
- k8s
- 코틀린
- 테스트
- 디자인패턴
- Coroutine
- Rxjava
- 책
- 글또
- mockito
- android
- viewmodel
- Compose
- 병럴프로그래밍
- theming
- g 단위테스트
- ReactiveProgramming
- 코루틴
- kotlin강좌
- 커스텀상태
- Gradle
- 알고리즘
- Kotlin
- 스레드
- Today
- Total
선생님, 개발을 잘하고 싶어요.
androidx navigation 구현해보자 본문
우선 참조 링크 https://developer.android.com/topic/libraries/architecture/navigation/navigation-implementing#java
Navigation Principles
- 앱은 고정된 시작 지점을 가진다.
- 네비게이션의 상태들은 스택처럼 관리된다.
- 업 버튼으론 절대 앱을 나가지 않는다.
- 백 버튼으론 절대 앱을 나가지 않는다.
- 여러 방향으로 깊게 연결해서 도착한 곳이 같은 목적지라면, 똑같은 네비게이션 스택을 가진다.
Navigation Architecture Component 를 사용한 네비게이션 구현
프로젝트 환경 설정 (이게 제일 중요)
0. Refactor > Migrate to AnroidX 로 리펙토링 하기(중요중요! 안됬다 싶으면 다시 프로젝트 만드세용 ㅠ)
1. File > Settings >> Experimental >> Enable Navigation Editor 체크 후 재시작
2. build.gradle 에 추가 (https://developer.android.com/topic/libraries/architecture/adding-components#navigation)
간단한 구현
0. navigation 리소스 디렉토리를 만든다.
1. nav_first.xml 리소스를 만든다.
2. new destination 들을 만들고 드래그 앤 드롭으로 연결 시킨다. (one Fragment, two Fragment)
3. 메인 엑티비티에 Containers > NavHostFragment 를 배치한다.
4. one Fragment 에 버튼 하나를 연결하고
5. 버튼에 다음 코드를 연결한다.
1 2 3 4 5 6 7 8 9 10 11 12 | override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { // Inflate the layout for this fragment val view = inflater.inflate(R.layout.fragment_one, container, false) val button = view.findViewById<Button>(R.id.button) button.setOnClickListener {view-> Navigation.findNavController(view).navigate(R.id.action_oneFragment_to_twoFragment) } return view } | cs |
6. 빌드해서 one 에서 two로 버튼을 누르면 이동하고, 뒤로가기 버튼을 누르면 다시 돌아오는지 확인한다.
7. 신기하니까 이것저것 만져보면서 다음 프로젝트에 적용한다!!
'개발 > android 개발' 카테고리의 다른 글
android viewmodel 사용하는 이유 (0) | 2018.11.28 |
---|---|
코틀린 데이터바인딩 연결시 (kotlin databinding) (0) | 2018.11.27 |
안드로이드 - 죽지않는 블루투스 스캐닝 (2) | 2018.11.22 |
잠금화면 어플리케이션(ProjectM) 개발 초기 개발리스트 (0) | 2018.11.20 |
안드로이드 통화 상태 감지 코드 (0) | 2018.11.20 |