我一直在片段内部做一些逻辑setUserVisibleHint()
方法。我一直在检查是否isVisibleToUser
为 true 然后使用getActivity
返回活动。在我将支持库更新到最新版本之前,这一切都运行良好(100%的时间)(support:appcompat-v7:24.2.0
). Now getActivity
总是返回 null。支持库是否有一些更改可以解释这种行为?
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(false);
if (isVisibleToUser) {
getActivity() <- null
}
我参加聚会有点晚了,但也许这可以帮助别人。我通过在片段类中创建一个布尔成员解决了这个问题。然后我用它来确定我是否能够成功获取 setUserVisibleHint 方法中的活动。如果没有,我会在 onAttach 中执行与活动相关的代码。见下文。
public MyFragment extends Fragment {
...
private boolean doInOnAttach = false;
@Override
public void setUserVisibleHint(boolean visible) {
super.setUserVisibleHint(visible);
// if the fragment is visible
if (true == visible) {
// ... but the activity has not yet been initialized
doInOnAttach = true;
} else {
myAction();
}
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (true == doInOnAttach) {
myAction();
doInOnAttach = false;
}
}
private void myAction() {
// code to execute here
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)