Skip to content Skip to sidebar Skip to footer

Null Context In Setuservisiblehint

A message needs to be displayed to the user when a fragment in a ViewPager becomes visible. Currently the call is: // Within a class that extends Fragment @Override public void set

Solution 1:

Better late than never ,I have a little hackish solution ,call setUserVisibleHint() from onActivityCreated() method.

privateboolean myIsVisibleToUser;

 @OverridepublicvoidsetUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    myIsVisibleToUser=isVisibleToUser;
    if (isVisibleToUser && getActivity()!=null) {
          MessageUtility.displayMessage(getContext());    
        }
}


@OverridepublicvoidonActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    setUserVisibleHint(myIsVisibleToUser);

}

Solution 2:

It's a bit different approach but more effective solution. Add a new OnPageChangeListenr to your ViewPager.

 yourPager.setOnPageChangeListener(newViewPager.OnPageChangeListener() {
            @OverridepublicvoidonPageScrolled(int i, float v, int i2) {

            }

            @OverridepublicvoidonPageSelected(int i) {
                // Check if i == your fragment's position and display message        
                MessageUtility.displayMessage(getContext());
            }

            @OverridepublicvoidonPageScrollStateChanged(int i) {

            }
        });

Post a Comment for "Null Context In Setuservisiblehint"