如何从已从片段启动的活动获取片段实例?

问题描述:

我有一个活动,有一个不同的碎片堆栈。一个包含项目列表的片段开始一个细节活动。在此活动中,我需要片段实例在创建活动时执行某些操作(与匕首2相关)。如何从已从片段启动的活动获取片段实例?

我试过findFragmentById和findFragmentByTag方法,但返回null。

我有我的活动验证码:

protected void initDI() { 
    ContactsFragment contactsFragment = (ContactsFragment) getSupportFragmentManager().findFragmentById(fragmentId); 
    ContactsFragmentComponent fragmentComponent = contactsFragment.getFragmentComponent(); 
    DetailContactActivityComponent subcomponent = fragmentComponent.createSubcomponent(new DetailContactActivityModule()); 
    subcomponent.injectDetailContactActivity(this); 
} 

我怎样才能获得片段的实例中的活动?

编辑:

问题是,当我开始一个新的活动,我得到的getFragmentManager实例,该实例是从启动该活动片段的fragmentManager不同。

+0

检查这个问题了http://*.com/questions/8482606/when-a-fragment-被置换和看跌型最背堆栈或移除的,确实,它停留 –

如果你找不到他们这样,然后尝试通过所有堆栈中的片段看:

boolean foundMyFragment = false; 
     String fragmentBackstackTag = ""; 
     FragmentManager fm = getSupportFragmentManager(); 
     for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){ 
      fragmentBackstackTag = fm.getBackStackEntryAt(entry).getName(); 
      Log.i(TAG, "Found fragment: " + fragmentBackstackTag); 

      // check if null, because sometimes fragmentBackstacktag is null 
      if (fragmentBackstackTag != null) { 
       if (fragmentBackstackTag.equals("fragmentTagYouAreSearching")) { 
        foundMyFragment = true; 
        // get fragment from backstack 
       } 
      } 
     }