我一直在 fragment 的 setUserVisibleHint() 方法内部做一些逻辑。我一直在检查 isVisibleToUser 是否为真,然后使用 getActivity 返回 Activity 。在我将支持库更新到最新版本 (support:appcompat-v7:24.2.0) 之前,它运行良好(100% 的时间)。现在 getActivity 总是返回 null。是否对解释此行为的支持库进行了一些更改?
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(false);
if (isVisibleToUser) {
getActivity() <- null
}
最佳答案
我参加派对有点晚了,但也许这可以帮助别人。我通过在 fragment 类中创建一个 bool 成员来解决这个问题。然后我用它来确定我是否能够成功地获得 setUserVisibleHint 方法中的 Activity 。如果没有,我执行onAttach中的activity相关代码。见下文。
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
}
}
关于android - fragment setuserVisibleHint true 但 getActivity 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39527867/