Navigation 구성 요소와 함께 FragmentContainerView를 사용하십니까?


38

lint는 이전 버전에서 Navigation 2.2.0-beta01로 업데이트 한 후 <fragment>태그를로 교체하라는 경고를 표시 FragmentContainerView합니다.

그러나 태그 만 교체하면 내비게이션 그래프가 팽창되지 않는 것 같습니다.

에 따르면 2.2.0-alpha01 , FragmentContainerView내부적으로 사용됩니다. 보푸라기 경고를 무시해야합니까?


activity_main.xml

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Lint warning: "Replace the <fragment> tag with FragmentContainerView. -->
    <fragment
        android:id="@+id/nav_host_main"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_graph_main"/>

    <!-- other elements -->

</androidx.constraintlayout.widget.ConstraintLayout>

3
사용의 장점은 무엇입니까 FragmentContainerView?
IgorGanapolsky


@EugenPechanec Jetpack Navigation을 사용할 때 왜 필요합니까?
IgorGanapolsky

@IgorGanapolsky 좋은 질문입니다. Jetpack Navigation은 조각 사이를 탐색합니다. 프래그먼트가 다른 컨테이너 레이아웃에 있을 때 프래그먼트 전환 (엔터 / 종료 애니메이션)이 다르게 동작 FragmentContainerView합니다. 차이점은 위에 링크 된 FCV 설명서에 설명되어 있습니다. 기본적으로 FCV는 예상대로 전환 작업을 더 많이 수행하도록되어 있습니다. 또는 Jetpack Navigation은 조각에 따라 다릅니다. 조각이 깨지면 새로운 고정 조각 라이브러리를 얻거나 새로운 고정 조각에 의존하는 새로운 버전의 탐색을 기다립니다.
Eugen Pechanec

@EugenPechanec 나는 당신이 말하는 것을 얻습니다. 그러나 Google이 Jetpack Navigation을 독점적으로 옹호했을 때 개발자가 서로 다른 두 가지 API를
따라야

답변:


13

중대한! 다른 버전의 알려진 문제가 있습니다 FragmentContainerView. 사용하기 전에 변경 로그 를 참조하십시오 . 버그 수정을 읽고 최신 버전의 라이브러리를 사용하십시오.


지금은이 사용 사례에 대한 수정 사항이 포함되어 있으므로 Fragment 1.2.0-beta02에 대한 종속성도 선언해야합니다.

implementation "androidx.fragment:fragment:1.2.0-beta02"

버전 1.2.0-beta02

2019 년 10 월 11 일

버그 수정

Fragment 's onInflate()가에서 적절한 속성을받지 못해 문제를 해결 FragmentContainerView했습니다 NavHostFragment. ( b / 142421837 )

출처 : https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0-beta02


6
이 솔루션은 저에게 효과적이지 않았습니다.
glend

@glend 이슈를 재현하는 최소한의 프로젝트를 준비하고 공식 이슈 트래커 에보고하십시오 . 감사!
Eugen Pechanec

11

NavigationBasicSample은 2.2.0-alpha01으로 업데이트되었습니다 여전히 사용하고 fragment태그를. NavigationAdvancedSample는 의 사용을 도시 FragmentContainerView하지만, 탐색이 그래프에 추가되는 코드 (그들은 여러 그래프 있음) 및 대응 호스트 단편에서 팽창된다 FragmentContainerView. 따라서 지금은 자동 인플레이션을 원한다면 경고를 무시해야한다고 말하고 싶습니다.


나는 샘플에서도 이것을 발견했다. 최신 Fragment종속성을 추가 하면 보푸라기 경고가 처리됩니다.
NearSane

왜 FragmentContainerView가 필요합니까?
IgorGanapolsky

AdvancedSample에서 코드를 확인했습니다. 그것은 단지 구토를 만든다! Google 팀이 왜 그렇게 어색한 방식으로 물건을 만들고 깨뜨려야하는지 모르겠습니다. 이제 확장 기능을 오늘 복사해야 할 수도 있지만 탐색 라이브러리의 일부 업데이트로 인해 내일이 다시 깨질 수 있습니다. 그냥 짜증나!
sud007
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.