片段变得可见时的监听器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了片段变得可见时的监听器相关的知识,希望对你有一定的参考价值。

我疯了,试图让一个选项菜单为不同的视图提供不同的选项。如果在我的片段上调用onResume(),我可以使它工作,但事实并非如此。

我有一个SherlockFragmentActivity,在onCreate期间添加了一个像这样的SherlockFragment:

if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) {
            Fragment f = LoginFragment.newInstance();

            getSupportFragmentManager()
                    .beginTransaction()
                    .add(android.R.id.content, f, "loginfragment")
                    .attach(f)
                    .commit();
        }

这最终使用相同的方法在其上添加另一个SherlockFragment:

Fragment f = OfferListFragment.newInstance();
        getActivity().getSupportFragmentManager()
                .beginTransaction()
                .add(android.R.id.content, f, "offerList")
                .addToBackStack(f.getClass().getSimpleName())
                .commit();

最后,使用该方法在顶部启动了另一个SherlockFragment:

AddOfferFragment newFragment = AddOfferFragment.newInstance(offer);

        getActivity()
                .getSupportFragmentManager()
                .beginTransaction()
                .add(android.R.id.content, newFragment, "addofferdialog")
                .addToBackStack(newFragment.getClass().getSimpleName())
                .commit();

我添加了onResume()事件,如下所示:

@Override
    public void onResume() {
        Log.e(TAG, "onResume");
        super.onResume();
    }

现在我看到onResume logs when they are created, but when I pressBackfrom any of them, I don't get theonResume`log's。我的一个选择是注销,它会解散所有这样的视图:

FragmentManager fm = getSupportFragmentManager();

        if (fm.getBackStackEntryCount() > 0) {
            fm.popBackStack(fm.getBackStackEntryAt(0).getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
        }

但我甚至没有在第一个片段上获得onResume。

由于另一个问题,我有片段透明here(这可能是正常的行为,我不确定)。我想知道我添加片段的方式是否错误?

如果没有,还有什么可能是问题?

答案

正如JonasSeputis和OP本人所指出的,解决方案是将transaction.add()改为transaction.replace()

The detailed solution is here.

以上是关于片段变得可见时的监听器的主要内容,如果未能解决你的问题,请参考以下文章

片段变得可见时的监听器

如何知道 Fragment 何时变得不可见

如何从活动中更改片段中视图的可见性

使用 add() 方法添加片段不会隐藏以前的片段

方向更改时不可见的片段

重新创建活动后片段不可见