ori*_*rel 93 compatibility android android-fragments android-3.0-honeycomb back-stack
我正在使用兼容包来使用Android 2.2中的Fragments.当使用片段,并在它们之间添加转换到backstack时,我想实现一个活动的onResume的相同行为,即,在弹出一个片段到达"前景"(用户可见)之后backstack,我想在片段中激活某种回调(例如,对共享UI资源执行某些更改).
我看到片段框架中没有内置回调.为了达到这个目的,有没有好的做法?
ori*_*rel 111
由于缺乏更好的解决方案,我得到了这个为我工作:假设我有1个活动(MyActivity)和几个相互替换的片段(一次只能看到一个).
在MyActivity中,添加此侦听器:
getSupportFragmentManager().addOnBackStackChangedListener(getListener());
Run Code Online (Sandbox Code Playgroud)
(如您所见,我正在使用兼容包).
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;
    }
Run Code Online (Sandbox Code Playgroud)
MyFragment.onFragmentResume()将在按下"后退"后调用.但有几点需要注意:
FragmentTransaction.addToBackStack())Bro*_*o25 33
我已经改变了建议的解决方案.对我来说效果更好:
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;
}
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           102482 次  |  
        
|   最近记录:  |