TabLayout 和 ViewPager 在 Orientation Change 后消失

TabLayout and ViewPager disappearing after Orientation Change

目前,我正在开发对不同方向的支持。我的横向布局有一个 viewpager 和 tablayout,而纵向布局只有一个片段。当我以任何方向启动应用程序时,布局都可以正常工作。然而,当方向在运行时改变时,在这种情况下从纵向到横向,viewpager 和 tablayout 完全从屏幕上消失,只留下父级高度和宽度的片段,即使分配了权重。

这让我相信布局没有正确改变。我的清单也没有应用 android:configurations。否则,当我改变它们的方向时,其他活动和片段工作正常。出于某种原因,只有这个不起作用。我将在下面附上 XML 代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer"
tools:context=".HomeActivity">

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    tools:ignore="UselessParent">
    <fragment
        android:id="@+id/none"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:tag="fragment_tag"
        android:name="com.example.trackeths.HomeFragment" />
</FrameLayout>


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_weight="1">

    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabGravity="fill"
        app:tabMode="fixed"
        app:tabTextColor="#fff"
        app:tabIndicatorColor="#fff"
        android:background="@color/colorPrimaryDark"
        />

    <androidx.viewpager.widget.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/viewPager"/>

</LinearLayout>

发布此问题后,突然顿悟,它可能是一个持久性片段,覆盖了我的布局(即由于 savedInstanceState,从纵向模式堆栈到横向模式的片段)。

因此,将超级调用更改为空。

super.onCreate(null);

Fool-proof way to handle Fragment on orientation change 那里得到灵感,如果有人感兴趣或者像我一样不熟悉片段。