마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

해당 프래그먼트를 띄울 시 프래그먼트 라벨 값에 임의의 변수 값을 넣고 싶습니다.

0 추천

해당 프래그먼트를 화면에 띄울 시 mobile_navigation.xml에 있는 프래그먼트 라벨 값에 코드를 통해 임의의 변수값(String)을 넣고 싶습니다.

일단 mobile_navigation.xml 코드 중 일부를 가져오긴 했지만 자바 소스 파일을 통해 이 xml파일을 매칭하는 과정부터 막혀서 자바 코드는 넣지 않았습니다.

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mobile_navigation"
    app:startDestination="@+id/nav_frag0">


---중략---

<fragment
        android:id="@+id/nav_frag1"
        android:name="org.techtown.just4design.ui.frag1.1stFragment"
        android:label="Example"
        tools:layout="@layout/fragment_gallery"/>

 

열심히 구글링 해봤으나 원하는 답을 찾지 못해 여기에 올려봅니다

 

Tact79 (170 포인트) 님이 2021년 9월 17일 질문

1개의 답변

0 추천
 
채택된 답변

네비게이션 컴포넌트를 사용할 때 UI를 업데이트 하는 방법 중 개발자 문서에 나온 방법은 아래처럼 리스너를 다는 방법입니다.

navController.addOnDestinationChangedListener { _, destination, _ ->
   if(destination.id == R.id.full_screen_destination) {
       toolbar.visibility = View.GONE
       bottomNavigationView.visibility = View.GONE
       supportActionBar?.title = "원하는 타이틀"
   } else {
       toolbar.visibility = View.VISIBLE
       bottomNavigationView.visibility = View.VISIBLE
   }
}

이 방법은 navigation graph가 간단할 때는 사용하기 좋은데, navigation graph가 커진다면 이 방법은 코드가 지저분해기 때문에

BaseFragment에 UI를 어떻게 보일지에 대한 함수를 정의하고 이걸 구현해서 처리할 수도 있고, 아니면 커스텀 툴바나 이런 게 많이 달리는 화면이라면 Fragment마다 별도로 툴바를 둘 수도 있습니다.

그리고 동적으로 Fragment의 타이틀을 세팅하는 경우라면 mobile_navigation.xml에 설정된 label은 지우시는게 좋습니다. 이게 툴바의 타이틀을 두번 갱신하게 되므로 애뮬레이터 같은데서는 약간의 화면 딜레이 현상을 줄 수도 있습니다.

spark (172,410 포인트) 님이 2021년 9월 17일 답변
Tact79님이 2021년 9월 18일 채택됨
...