【问题标题】:How to get the fragment instance from an activity that has been started from the fragment?如何从已经从片段启动的活动中获取片段实例?
【发布时间】:2015-11-05 10:44:08
【问题描述】:

我有一个 Activity,它有不同的片段堆栈。一个包含项目列表的片段开始一项详细活动。在这个活动中,我需要片段实例在创建活动时做一些事情(与匕首 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);
}

如何在activity中获取fragment的实例?

编辑:

问题是当我启动一个新活动并获得 getFragmentManager 实例时,此实例与启动该活动的片段的 fragmentManager 不同。

【问题讨论】:

标签: android fragment dagger-2


【解决方案1】:

如果你用这种方式找不到它们,那么尝试查看所有的 backstack 片段:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多