Какое событие запускается при выборе фрагмента вкладки

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

Я могу использовать два следующих события из хостинга, но я не хочу их, так как я ожидаю фрагмент должен знать эту логику самостоятельно и выполнять эту задачу. Есть идеи? ТКС.

  @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
        // When the given tab is selected, switch to the corresponding page in the ViewPager.
        mViewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    }

3 ответов


попробуйте setUserVisibleHint () во фрагменте, как описано в ответ. Когда фрагмент находится на выбранной вкладке, setUserVisibleHint() будет вызываться с true, а когда фрагмент не является выбранной вкладкой, setUserVisibleHint () будет вызываться с false. Это работает для меня, используя библиотеку поддержки.

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);

    if (isVisibleToUser)
        Log.d("MyFragment", "Fragment is visible.");
    else
        Log.d("MyFragment", "Fragment is not visible.");
}

можно переопределить setUserVisibleHint(boolean isVisibleToUser) или onHiddenChanged (boolean hidden) метод.

  • в случае setUserVisibleHint(boolean isVisibleToUser),
    isVisibleToUser=true когда фрагмент виден и isVisibleToUser=false когда фрагмент скрыта.

  • в случае onHiddenChanged (boolean hidden), hidden:True если
    фрагмент теперь скрыт, ложен, если не виден.


Я не тестировал это, но я считаю, что вы можете использовать onHiddenChanged метод этот фрагмент

документы:

вызывается, когда скрытое состояние (возвращаемое isHidden() фрагмента изменилось.

http://developer.android.com/reference/android/app/Fragment.html#onHiddenChanged%28boolean%29