您能告诉我为什么作者需要为Fragment包装FrameLayout吗?

时间:2020-01-13 08:33:21

标签: android android-studio android-fragments

代码A来自activity_main.xml。它是sample project的一部分。

我不知道为什么作者需要为 Fragment 包装 FrameLayout , 在我删除代码A的 FrameLayout 并获得代码B之后,代码B运行良好。

您能告诉我为什么作者需要为Fragment包装FrameLayout吗?

代码A

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true"
    tools:context=".MainActivity">

    <fragment
        android:id="@+id/fragment_container"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:navGraph="@navigation/nav_graph"
        app:defaultNavHost="true"/>

</FrameLayout>

代码B

<?xml version="1.0" encoding="utf-8"?>
<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/fragment_container"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:navGraph="@navigation/nav_graph"
    app:defaultNavHost="true"/>

1 个答案:

答案 0 :(得分:4)

您能告诉我为什么作者需要为Fragment包装FrameLayout吗?

不需要FrameLayoutFrameLayout最初可能是由于其他原因(例如,通过FragmentTransaction更改内容)而从未被删除。