我在AppCompatActivity
添加片段。而且我想知道什么时候任何片段都会聚焦或失去焦点。例如,当添加新片段时,我想要一些代码告诉先前的片段,即他失去焦点。
我已经尝试了setUserVisibleHint()
和onHiddenChanged()
方法,但两种方法都无效。
有人能告诉我怎么做。
答案 0 :(得分:0)
感谢@ oriharel 提供了一个很好的解决方法来处理这种情况。这是代码:
在您的活动(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()将在" 后退"之后调用。被压了。但有几点需要注意:
它假设您已将所有事务添加到backstack(使用FragmentTransaction.addToBackStack())
它将在每次堆栈更改时激活(您可以将其他内容存储在后端堆栈中,例如动画),这样您就可以获得多次调用相同的片段实例。
答案的原始来源here