当ViewPager中的片段变为可见时,需要向用户显示一条消息。当前的电话是:
// Within a class that extends Fragment
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
MessageUtility.displayMessage(getContext());
}
}
MessageUtility.displayMessage()
打开一个带有消息的警报对话框。显示消息需要
Context
。但是,不能保证在调用setUserVisibleHint()
时就附加该片段。因此,即使Context
,null
也将是isVisiableToUser == true
。理论上检查
isVisibleToUser && isAttached()
是可行的,但是setUserVisibleHint()
之后不会触发isAttached() == true
。有什么方法可以让对
displayMessage()
的调用等待直到附加了Fragment
吗? 最佳答案
总比没有好,我有一点棘手的解决方案,请从setUserVisibleHint()
方法调用onActivityCreated()
。
private boolean myIsVisibleToUser;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
myIsVisibleToUser=isVisibleToUser;
if (isVisibleToUser && getActivity()!=null) {
MessageUtility.displayMessage(getContext());
}
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setUserVisibleHint(myIsVisibleToUser);
}