在 TabHost 中添加子頁面後,子頁面內的點擊事件無響應;若子頁面再引用其他頁面,內容也無法顯示。
ViewPager + Fragment 或 TabLayout 實現分頁,TabHost 存在已知嵌套滑動、焦點分發等缺陷。onInterceptTouchEvent 或設置 android:descendantFocusability。getChildFragmentManager() 而非 getFragmentManager(),否則子 Fragment 生命周期異常。match_parent 或被覆蓋,導致可見區域為零。參考 CSDN 專題:TabHost 遷移至 ViewPager+Fragment 完整指南。核心步驟:
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
配合 FragmentStateAdapter 管理頁面,徹底解決嵌套與事件問題。
android:clickable="true" 並確保無透明覆蓋層。getLocalActivityManager().startActivity() 正確啟動子 Activity(需繼承 ActivityGroup,已廢棄)。建議直接遷移至現代組件,避免在舊 API 上投入過多精力。