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

Android Fragment 替換無反應:同一容器 ID 重複 add 導致

     編輯:程式設計綜合問答

兩個 Button 分別載入 `frag`、`frag2` 到同一 `R.id.linear1`,第一個用 `add`,第二個用 `replace`,但第二個按鈕無反應。

問題

第一次點擊 `btn1` 時 `add` 了 `frag`。第二次點擊 `btn2` 時,`findFragmentById(R.id.linear1)` 找到的是 **已存在的 `frag`**(非 null),導致 `if (fragment==null)` 判斷失效,`replace` 不執行。

修正

button.setOnClickListener(v -> {
    FragmentManager fm = getFragmentManager();
    Fragment newFrag = new frag2();
    fm.beginTransaction()
      .replace(R.id.linear1, newFrag) // 直接 replace,無需判斷 null
      .commit();
});

或用 `fm.beginTransaction().remove(old).add(new).commit()` 顯式移除舊 Fragment。

參考:Fragment 替換最佳實踐

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