片段的onResume()不叫从backstack弹出时 [英] Fragment's onResume() not called when popped from backstack

查看:151
本文介绍了片段的onResume()不叫从backstack弹出时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好我正在开发中,我使用我使用单个活动和3个片段android应用。因此,考虑我有3个片段AB C.当我从一个切换到B,我加入片段来backstack和呈三角为B至C。现在,当我点击回从C它让我B和相似B到A为好。

Hi I am developing android application in which I am using I am using single Activity and 3 fragments. So consider I have 3 fragments A B C. When I switch from A to B, I am adding Fragment to backstack and simillar for B to C. Now when I click back from C it shows me B and similar for B to A as well.

不过的是,当我从C到B或B到A,这不是叫 onResume()片段。

But thing is that when I come from C to B or B to A, it's not calling onResume() or any other life cycle methods of Fragment.

我想这样做实际上是对每一个什么片段我在动作条不同的标题。所以,在我的code,当我移动从A到B或B到C,我改变活动标题片段里面。但是,当我点击回它不改变根据的。

What I want to do actually for every Fragment I have different title in ActionBar. So, in my code, when I move from A to B or B to c, I am changing activity title inside fragment. But when I click on back it not changing according to that.

什么是实际的问题?为什么从backstack它不是要求弹出后 onResume()我的片段?我该如何解决这个问题?需要帮忙。谢谢你。

What is the actual problem? Why after pop from backstack its not calling onResume() for my Fragment? How do I solve this problem? Need Help. Thank you.

推荐答案

onResume()片段是叫活动恢复时才能使用。因此,这不会帮助你。即使我面临着类似的问题现在。您可以实施 OnBackStackChangedListener 并获得在堆栈顶部的片段名称并设置基于该动作条称号。

onResume() of the Fragment is called only when the Activity is resumed. So this wont help you. Even I'm facing similar issue right now. You can implement OnBackStackChangedListener and get the fragment name in the top of the stack and set the ActionBar title based on that.

private FragmentManager.OnBackStackChangedListener getListener()
{
    FragmentManager.OnBackStackChangedListener result = new FragmentManager.OnBackStackChangedListener()
    {
        public void onBackStackChanged()
        {
            FragmentManager manager = getFragmentManager();

            if (manager != null)
            {
                if(manager.getBackStackEntryCount() >= 1){
                    String topOnStack = manager.getBackStackEntryAt(manager.getBackStackEntryCount()-1).getName();
                    Log.i("TOP ON BACK STACK",topOnStack);
                }
                }
            }
    };

    return result;
}

这篇关于片段的onResume()不叫从backstack弹出时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆