片段onResume从后堆栈

我正在使用兼容性包在Android 2.2上使用Fragments。使用片段并将片段之间的过渡添加到后台时,我想实现活动的onResume相同的行为,即,每当片段从弹出窗口中移到“前景”(用户可见)时,回栈,我想在片段中激活某种回调(例如,对共享UI资源执行某些更改)。

我看到片段框架中没有内置的回调。为了达到这个目的,有什么好的做法吗?


摇曳的蔷薇
浏览 430回答 3
3回答

有只小跳蛙

由于缺少更好的解决方案,我为我准备了这个工作:假设我有1个活动(MyActivity),并且相互替换的片段很少(一次只能看到一个)。在MyActivity中,添加以下侦听器:getSupportFragmentManager().addOnBackStackChangedListener(getListener());(如您所见,我正在使用兼容性包)。getListener实现:private OnBackStackChangedListener getListener()    {        OnBackStackChangedListener result = new OnBackStackChangedListener()        {            public void onBackStackChanged()             {                                   FragmentManager manager = getSupportFragmentManager();                if (manager != null)                {                    MyFragment currFrag = (MyFragment) manager.findFragmentById(R.id.fragmentItem);                    currFrag.onFragmentResume();                }                               }        };        return result;    }MyFragment.onFragmentResume()按下“返回”后将被调用。一些注意事项:假设您已将所有交易添加到后台(使用 FragmentTransaction.addToBackStack())每次更改堆栈时都会激活它(您可以将其他内容存储在后堆栈中,例如动画),因此您可能会收到同一片段实例的多个调用。

皈依舞

我对建议的解决方案做了一些更改。这样对我更好地工作:private OnBackStackChangedListener getListener() {    OnBackStackChangedListener result = new OnBackStackChangedListener() {        public void onBackStackChanged() {            FragmentManager manager = getSupportFragmentManager();            if (manager != null) {                int backStackEntryCount = manager.getBackStackEntryCount();                if (backStackEntryCount == 0) {                    finish();                }                Fragment fragment = manager.getFragments()                                           .get(backStackEntryCount - 1);                fragment.onResume();            }        }    };    return result;}

ABOUTYOU

Android Developers的以下部分介绍了一种通信机制,该机制创建活动的事件回调。引用其中的一行:做到这一点的一种好方法是在片段内定义一个回调接口,并要求主机活动实现它。当活动通过接口收到回调时,它可以根据需要与布局中的其他片段共享信息。编辑: 该片段有一个onStart(...)当用户可见该片段时调用的。同样,onResume(...)当可见且正在运行时。这些与他们的活动对应物相关。简而言之:使用onResume()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android