Navigasyon bileşeniyle FragmentContainerView mı kullanıyorsunuz?


38

Önceki sürümden Navigation 2.2.0-beta01 sürümüne güncelledikten sonra , tiftik <fragment>etiketi değiştirme ile ilgili bir uyarı verir FragmentContainerView.

Ancak, etiketin tek başına değiştirilmesi gezinme grafiğinin şişirilmesini engelliyor gibi görünüyor.

Göre 2.2.0-alpha01 , FragmentContainerViewdahili olarak kullanılır. Tiftik uyarısını görmezden gelmeli miyiz?


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
Kullanmanın avantajı nedir FragmentContainerView?
IgorGanapolsky


@EugenPechanec Jetpack Navigasyon'umuz olduğunda neden buna ihtiyacımız var?
IgorGanapolsky

@IgorGanapolsky İyi soru, Jetpack Navigasyon parçalar arasında geziniyor. Parça geçişleri (animasyonlara giriş / çıkış animasyonları), fragmanlar içeride FragmentContainerViewve başka bir konteyner düzeninde olduğunda farklı davranır . Farklılıklar yukarıda bağlantılı FCV belgelerinde açıklanmıştır. Temel olarak, FCV'nin geçişlerin beklediğiniz gibi çalışmasını sağlaması gerekiyor. Veya, Jetpack Gezinme parçalara bağlıdır. Parçalar kırıksa, yeni sabit Parçalar kitaplığı alır veya Gezinmenin yeni sabit Parçalara bağlı yeni sürümünü beklersiniz.
Eugen Pechanec

@EugenPechanec Ne dediğini anlıyorum. Bununla birlikte, Google'ın Jetpack Navigasyon'u münhasıran savunduğunda geliştiricilerin iki farklı API'ye
ayak uydurmasının

Yanıtlar:


13

Önemli! Uygulamasının farklı sürümleriyle ilgili bilinen sorunlar var FragmentContainerView. Kullanmadan önce değişiklik günlüğüne bakın . Hata düzeltmelerini okuyun ve kitaplığın son sürümünü kullanın.


Şimdilik, bu kullanım durumu için bir düzeltme içerdiği için Fragment 1.2.0-beta02'ye de bağımlılık bildirmelisiniz.

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

Sürüm 1.2.0-beta02

11 Ekim 2019

Hata düzeltmeleri

Fragment en bir sorun giderildi onInflate()gelen özellikleri ile ilgili bilgileri almadı FragmentContainerViewgibi durumlarda kırılma, NavHostFragment. ( b / 142421837 )

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


6
Bu çözüm benim için işe yaramadı.
Şubat'ta

@glend Lütfen sorunu yeniden oluşturan minimal bir proje hazırlayın ve resmi sorun izleyiciye bildirin . Teşekkürler!
Eugen Pechanec

11

NavigationBasicSample 2.2.0-alpha01 olarak güncellendi ama hala kullanıyor fragmentetiketi. NavigationAdvancedSample kullanımını göstermektedir FragmentContainerView, ancak nav grafik eklenir kodu (çeşitli farklı grafikler var) ve karşılık gelen ana fragmanı şişirilir FragmentContainerView. Dolayısıyla, şu anda otomatik enflasyon istiyorsak uyarıyı görmezden gelmemiz gerektiğini söyleyebilirim.


Bunu örneklerde de fark ettim. Görünüşe göre en son Fragmentbağımlılığın eklenmesi tiftik uyarısını halleder.
neredeyse

Neden FragmentContainerView'a ihtiyacımız var?
IgorGanapolsky

Kodu AdvancedSample içinde kontrol ettim. Bu beni kusturuyor! Google ekibinin neden bu kadar garip bir şekilde bir şeyler yaratması ve bozması gerektiğini bilmiyorum. Şimdi bugün uzantı işlevini kopyalamak zorunda kalabilirim, ancak bu yine de gezinme kitaplığındaki bazı güncellemelerle yarını kırabilir. Sadece berbat !!
sud007
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.