代码之家  ›  专栏  ›  技术社区  ›  Lumbi

FragmentisAdded()对已添加的Fragment返回false

  •  20
  • Lumbi  · 技术社区  · 11 年前

    我有一个整洁的功能:

    private void addMapFragment(){
        if(!mapFragment.isAdded()){
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.add(R.id.mapContainer, mapFragment);
            ft.commit();
        }
    }
    

    我在打电话 addMapFragment() 在我的活动中 onCreate() .然后,我从调用 addMapMapFragment() 这个 isAdded() 方法看起来一点用处都没有,因为我收到一个崩溃消息,说“片段已经添加: MapFragment[...] "

    有线索吗?

    2 回复  |  直到 8 年前
        1
  •  40
  •   Philipp Jahoda    11 年前

    FragmentTransactions 已提交 异步地 。因此,您需要致电

    getFragmentManager().executePendingTransactions();
    

    之前 你打电话

    Fragment.isAdded();
    

    这样,你可以确保 一切都是最新的 .

        2
  •  0
  •   km86    11 年前

    相反,请检查getSupportFragmentManager.findFragmentById(),看看是否得到了预期的片段。如果现在可以添加并提交。