8

У меня есть 4 (скажем 1,2,3 & 4) фрагменты. И одновременно любой из них будет видимым для Пользователя. Во втором фрагменте я хочу что-то сделать, когда пользователь придет на него. Теперь, когда пользователь перешел на 3-й фрагмент &, нажмите кнопку «Назад», я хочу запустить какой-то код. Моя проблема: onResume не вызывается, когда пользователь обращается к кнопке с обратной связью & подходит ко второму фрагменту.Фрагмент onResume не называется

+0

Попробуйте использовать 'onAttach()' метод, а не 'onResume()' – Procurares

+0

Уже пробовал .... На самом деле OnAttch() просто вызывается один раз, когда мы придаем его от фрагмента деятельности. – hemu

+0

Как вы переключаетесь между фрагментами? Добавьте примерный код. – antonyt

ответ

4

Недавно я столкнулся с той же проблемой, я знаю, что ее слишком поздно, но только в том случае, кто-то другой ищет это, вот мой ответ:

Благодаря @fasteque для сужения моего поиска.

Фрагменты onResume() или onPause() будет называться только тогда, когда Деятельность onResume() или onPause() называется. Они тесно связаны с деятельностью.

Но если вы все еще хотите слушать изменения в вашей деятельности, как фрагмент, который находится на вершине, и вызвать события, соответственно, вы можете хотите взглянуть на FragmentManager.OnBackStackChangedListener

Надеются, что это помогает :)

1

I У нас была такая же проблема. Если вы хотите переключиться с третьего фрагмента на 2-й фрагмент (с помощью кнопки «Назад» или по-другому), вы можете вызвать второй фрагмент в onPause третьего фрагмента.

@Override 
public void onPause() { 
    super.onPause(); 

    Fragment2 fragment2= (Fragment2) getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment2); 
    if (fragment2!= null) { 
     //you can call any function from fragment2 
     fragment2.SomeFunctions(); 
    } 
} 
Смежные вопросы