首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android Activity中同時顯示多個Fragment:XML靜態加載與常見錯誤排查

     編輯:程式設計綜合問答

正確 XML 佈局寫法

<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"> <!-- 或 vertical -->

    <fragment
        android:id="@+id/frag_left"
        android:name="com.example.LeftFragment" <!-- 必須指定完整類名 -->
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <fragment
        android:id="@+id/frag_right"
        android:name="com.example.RightFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

</LinearLayout>

關鍵要求(缺一不可)

  1. Fragment 類必須存在且繼承 `android.app.Fragment` (或 `androidx.fragment.app.Fragment`)**,且有無參構造函數。
  2. `android:name` 或 `class` 屬性必須填寫完整包名+類名,大小寫敏感。
  3. 每個 `` 必須有唯一 `android:id`** (或 `android:tag`),否則恢復狀態時會衝突。
  4. 佈局寬高/權重設置合理,確保兩個 Fragment 可見且不重疊。

常見報錯原因排查表

現象可能原因解決
InflateException: Binary XML file line #X: Error inflating class fragment類名拼錯 / 類未繼承 Fragment / 包名錯誤檢查 `android:name` 與 Java 類完全一致
IllegalArgumentException: No view found for id 0x... for fragment...Fragment 類中 `onCreateView` 返回 null / 佈局文件不存在確保 `onCreateView` inflate 正確佈局並返回 View
運行時崩潰,提示 duplicate id兩個 fragment 缺少 id 或 id 相同為每個 fragment 指定唯一 android:id
Fragment 之間無法通信直接持有引用調用通過 Activity 做中介:`((MainActivity)getActivity()).onFragmentMessage(...)`

Fragment 類最小模板


public class LeftFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_left, container, false);
    }
}

總結

**靜態 XML 加載 Fragment 最省事**,只要類名對、id 唯一、佈局對,基本不會報錯。動態添加 (`FragmentTransaction`) 適用於運行時條件判斷、標籤頁切換等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved