我有一个具有不同堆栈片段的Activity。一个包含项目列表的片段启动详细活动。在此活动中,我需要片段实例在创建活动时执行某些操作(与dagger 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 :(得分: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
}
}
}