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 次 |
| 最近记录: |