선생님, 개발을 잘하고 싶어요.

androidx navigation 구현해보자 본문

개발/android 개발

androidx navigation 구현해보자

알고싶은 승민 2018. 11. 23. 00:06

우선 참조 링크 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. 신기하니까 이것저것 만져보면서 다음 프로젝트에 적용한다!! 


Comments