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

Android 側滑抽屜導航實戰:FragmentActivity 中正確使用 getSupportFragmentManager 切換 Fragment

     編輯:Java 綜合教學

Android 側滑抽屜導航實戰:FragmentActivity 中正確使用 getSupportFragmentManager 切換 Fragment

getSupportFragmentManager() 必須在 FragmentActivity 及其子類中調用。本文通過自定義側邊欄按鈕點擊動態替換 Fragment 演示正確用法。

實現步驟

  1. 創建目標 Fragment:CarlozLibFragment 包含 WebView,onCreateView 加載個人網站。
  2. 側邊欄 Fragment:NavigationDrawerFragment 使用自定義佈局 diy_slider_content.xml,含按鈕 btnJump。
  3. 定義回調接口:在 NavigationDrawerFragment 內部接口 NavigationDrawerCallbacks 新增 onGotoCarlozLibClicked()。
  4. 主 Activity 實現接口:SliderActivity implements NavigationDrawerCallbacks,在回調中切換 Fragment。

關鍵代碼

側邊欄按鈕點擊觸發回調

root.findViewById(R.id.btnJump).setOnClickListener(v -> {
    if (mDrawerLayout != null) mDrawerLayout.closeDrawer(mFragmentContainerView);
    if (mCallbacks != null) mCallbacks.onGotoCarlozLibClicked();
});

回調接口定義

public static interface NavigationDrawerCallbacks {
    void onNavigationDrawerItemSelected(int position);
    void onGotoCarlozLibClicked(); // 新增
}

主 Activity 實現切換

@Override
public void onGotoCarlozLibClicked() {
    getSupportFragmentManager().beginTransaction()
        .replace(R.id.container, new CarlozLibFragment())
        .commit();
}

關鍵點總結

  • 主 Activity 必須繼承 FragmentActivity(或 AppCompatActivity),才能調用 getSupportFragmentManager()。
  • Fragment 事務:beginTransaction() → replace(containerId, fragment) → commit()。
  • 側邊欄關閉:DrawerLayout.closeDrawer(view)。
  • 回調模式解耦側邊欄與具體業務 Fragment。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved