如何从已从片段启动的活动获取片段实例?
问题描述:
我有一个活动,有一个不同的碎片堆栈。一个包含项目列表的片段开始一个细节活动。在此活动中,我需要片段实例在创建活动时执行某些操作(与匕首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不同。
答
如果你找不到他们这样,然后尝试通过所有堆栈中的片段看:
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
}
}
}
检查这个问题了http://stackoverflow.com/questions/8482606/when-a-fragment-被置换和看跌型最背堆栈或移除的,确实,它停留 –