1

how detect when fragment becomes visible ,i searched for this question and got many answers .

1 . use setUserVisibleHint() : this method is not invoke all times and does not get called automatically. for example i created this code

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setUserVisibleHint(false);
}

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    if (isResumed()){
        if (isVisibleToUser){//fragment visible
            load();
        }else{
            //content.listener.stop();
        }
    }
}

this method is not invoked for first item in viewPager . it mean this is not worked truly .

2 . use onHiddenChanged() : this answer was true but now it's not working . I checked this code in fragment . but this is not invoking sometimes.

@Override
public void onHiddenChanged(boolean hidden) {
    super.onHiddenChanged(hidden);
    Log.e(TAG , "   "+hidden);
}

3 . some idea for paging in viewPager like setOnPageChangeListener : pay attention , i want true answer in fragment for all times . not just for viewPager or other views

i got answers in these links anad ... :

How to determine when Fragment becomes visible in ViewPager

Detect when fragment becomes visible [duplicate]

any one can help me by true answer?

Kaiido
  • 123,334
  • 13
  • 219
  • 285
MrNadimi
  • 1,424
  • 4
  • 18
  • 33

1 Answers1

0

I use setUserVisibleHint and it perfectly working for me. I think you forget to give super.setUserVisibleHint(isVisibleToUser); within setUserVisibleHint function.

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        //When fragment is visible
    }
}

Hope so it will help you.
Thanks

Shohan Ahmed Sijan
  • 4,391
  • 1
  • 33
  • 39