다음과 같이 빈 프래그먼트를 만들면
요상한 코드들이 만들어져있는 파일이 만들어지고 layout에도 만들어지나? 싶다.
코틀린 3강 - 앱 만들기
에서 Navigation을 사용하는데 버전이 이전 버전이라서 deprecated된것이 많은것 같다. 어찌저찌 실행은 하고 있는데 올바른 방식인지는 잘 모르겠다.
MainActivity에서 activity_main.xml에 적어준 프래그먼트의 id인 nav_host_fragment를 인식시켜서 화면에 보이게 하기영상에선 검은색 코드화면같이 nav_host_fragment를 그냥 지정했는데 아무리 해도 나오지 않아서 아래의 코드와 같이 실행했다.
navController는 프로퍼티 위치에 lateinit으로 지연 초기화 시킨것은 같다.
MainFragment.kt에서 버튼 인식시켜서 다음 프래그먼트로 이동하기
버튼이 여러개일때 setOnnClickListner를 여러번 반복해서 여러번 쓰는 것 보다는 interface를 상속해서 재정의 하는게 좋을 것 같다.
인터페이스를 상속받고 onClick()을 재정의하면 when문을 통해서 뭐가 눌렸을때를 적어줄수 있다. 그 후 버튼이 눌렸을때 setOnClickListner에는 this를 줘서 객체가 정의한 onClick()이 실행되게 한다.
navigate에는 bundle객체를 줘서 데이터를 다음 프래그먼트에 전달해줄 수 있다.번들을 받을 때는 arguments?.getInt(키)
형식으로 받을 수 있다. value의 형식에 따라 getInt, getString, 등등이 있다. blank형식의 프래그먼트를 받을 때 onCreate()에 자동으로 만들어지는것 같다.
프래그먼트를 만들었을때 기본으로 만든다면 onCreateView()를 제어해줘야한다.그리고 프래그먼트를 만들었다면 Activity나 다른곳에서 제어를 할 수 있다. 이때 supportFragmentManager.beginTransaction()
안에 있는 함수들 중 add, replace, remove를 사용한 후 commit()을 해줘야 한다.
Intent()에 인자로 다음 액티비티의 클래스 정보를 주고 startActivity()매개변수로 그 정보를 넘겨주면 화면 전환은 쉽게 되나보다.