2015-11-05 181 views
0

我有一個活動,有一個不同的碎片堆棧。一個包含項目列表的片段開始一個細節活動。在此活動中,我需要片段實例在創建活動時執行某些操作(與匕首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://stackoverflow.com/questions/8482606/when-a-fragment-被置換和看跌型最背堆棧或移除的,確實,它停留 –

回答

0

如果你找不到他們這樣,然後嘗試通過所有堆棧中的片段看:

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 
       } 
      } 
     }