gpt4 book ai didi

android - 来自后台堆栈的 fragment onResume

转载 作者:IT老高 更新时间:2023-10-28 13:06:08 25 4
gpt4 key购买 nike

我正在使用兼容性包在 Android 2.2 中使用 Fragments。当使用 fragment 并将它们之间的转换添加到后台堆栈时,我想实现与 Activity 的 onResume 相同的行为,即,每当 fragment 在弹出后被带到“前台”(对用户可见)时backstack,我希望在 fragment 中激活某种回调(例如,对共享 UI 资源执行某些更改)。

我看到 fragment 框架中没有内置回调。有没有什么好的做法可以实现这一点?

最佳答案

由于缺乏更好的解决方案,我得到了这个为我工作:假设我有 1 个 Activity (MyActivity) 和几个相互替换的 fragment (一次只有一个可见)。

在 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() 将在按下“返回”后调用。不过有几点需要注意:

  1. 假设您添加了所有事务到后台堆栈(使用FragmentTransaction.addToBackStack())
  2. 将在每个堆栈上激活更改(您可以将其他内容存储在回栈如动画)所以您可能会接到多个电话 fragment 的相同实例。

关于android - 来自后台堆栈的 fragment onResume,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6503189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com