代码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"/>
答案 0 :(得分:4)
您能告诉我为什么作者需要为Fragment包装FrameLayout吗?
不需要FrameLayout
。 FrameLayout
最初可能是由于其他原因(例如,通过FragmentTransaction
更改内容)而从未被删除。