NavigationコンポーネントでFragmentContainerViewを使用していますか?


38

以前のバージョンからNavigation 2.2.0-beta01に更新した後、lintは<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

:公式ドキュメントを参照してください@IgorGanapolsky developer.android.com/reference/androidx/fragment/app/...
オイゲン・Pechanec

@EugenPechanec Jetpack Navigationがあるのになぜ必要なのですか?
IgorGanapolsky

@IgorGanapolsky良い質問です。JetpackNavigationはフラグメント間を移動します。フラグメントのトランジション(開始/終了アニメーション)は、フラグメントがFragmentContainerView他のコンテナレイアウトにあるときとそれ以外のときの動作が異なります。違いについては、上記のリンクのFCVドキュメントで説明されています。基本的に、FCVは予想どおりにトランジションをより機能させるようになっています。または、Jetpack Navigationはフラグメントに依存します。フラグメントが壊れている場合は、新しい固定フラグメントライブラリを取得するか、新しい固定フラグメントに依存するナビゲーションの新しいバージョンを待ちます。
Eugen Pechanec

@EugenPechanec私はあなたの言っていることを理解しています。ただし、GoogleがJetpack Navigationのみを明確に主張している場合、開発者が2つの異なるAPIについていくのは
面倒だと思い

回答:


13

重要!の異なるバージョンには既知の問題がありますFragmentContainerView。使用する前に変更ログを確認してください。バグ修正を読み、ライブラリの最新バージョンを使用します。


現時点では、このユースケースの修正が含まれているため、フラグメント1.2.0-beta02への依存関係も宣言する必要があります。

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

バージョン1.2.0-beta02

2019年10月11日

バグの修正

FragmentがonInflate()から適切な属性を受信せずFragmentContainerView、などのケースが破損する問題を修正しましたNavHostFragment。(b / 142421837

ソース:https : //developer.android.com/jetpack/androidx/releases/fragment#1.2.0-beta02


6
この解決策は私にはうまくいきませんでした。
ブレンド

@glend問題を再現する最小限のプロジェクトを準備し、公式の問題トラッカーに報告してください。ありがとう!
Eugen Pechanec

11

NavigationBasicSampleは 2.2.0-alpha01に更新されましたが、まだ使用しているfragmentタグを。NavigationAdvancedSampleはの使用を示すFragmentContainerViewが、NAVグラフがに追加されたコード(それらはいくつかの異なるグラフを持っている)と対応するホスト断片に膨張されますFragmentContainerView。したがって、現時点では、自動インフレが必要な場合は警告を無視する必要があります。


サンプルでもこれに気づきました。最新のFragment依存関係を追加すると、lint警告が処理されるようです。
ほぼ健全な

FragmentContainerViewが必要なのはなぜですか?
IgorGanapolsky

AdvancedSampleでコードを確認しました。それは私を嘔吐させるだけです!なぜGoogleのチームがこのような厄介な方法で物事を作成し、破壊しなければならないのか、私にはわかりません。さて、今日は拡張機能をコピーする必要があるかもしれませんが、ナビゲーションライブラリの更新により、明日は再び壊れる可能性があります。やばい!
sud007
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.