Как сделать код, когда фрагменты в ViewPager появляются и исчезают - PullRequest
0 голосов
/ 20 мая 2019

В моем приложении для Android я использую ViewPager с фрагментами и хочу запустить некоторый код, когда появляется фрагмент (когда его видит пользователь) и когда исчезает фрагмент (когда пользователь останавливает просмотр фрагмента)

Я пытался переопределить onPause (), onResume (), но фрагменты, которые не отображаются в пользовательском интерфейсе, все равно запускают эти методы (я думаю, что эти методы запускаются при создании фрагмента.)

@Override
public void onPause() {
    Log.i(TAG, "====onPause - " + phrase.getPhrase());
    super.onPause();
}

@Override
public void onResume() {
    Log.i(TAG, "====onResume - " + phrase.getPhrase());
    super.onResume();
}

Iхотите запустить какой-то код только тогда, когда фрагмент появляется и исчезает в пользовательском интерфейсе.Но в моем случае каждая новая страница создает это:

==== onPause - я хочу, чтобы вы отвели Тома в школу.==== onResume - Могу я поговорить с тобой, Том?==== onPause - я знаю, что Том хочет поговорить с тобой.==== onPause - Могу ли я поговорить с вами?==== onPause - Могу я поговорить с тобой, Том?==== onResume - я знаю, что Том хочет поговорить с вами.==== onResume - Могу я поговорить с вами?==== onResume - Могу я поговорить с тобой, Том?

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Я решил свою проблему следующим образом:

  @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {

        if(phrase != null){
            if(isVisibleToUser){
                Log.i(TAG, "setUserVisibleHint" + phrase.getPhrase()+ "|isVisibleToUser " + isVisibleToUser);
            }else {
                Log.i(TAG, "setUserVisibleHint" + phrase.getPhrase()+ "|isVisibleToUser " + isVisibleToUser);
            }
        }
}
1 голос
/ 20 мая 2019

Вы можете использовать метод ниже: -

override fun setUserVisibleHint(isVisibleToUser: Boolean) {
    super.setUserVisibleHint(isVisibleToUser)
    if(isVisibleToUser){
     // do something
      }

}
...