2013-07-01 4 views
22

Mam FragmentActivity, niektóre fragmenty i usługę działającą w tle. Czy możliwe jest sprawdzenie z usługi, jeśli widoczny jest określony fragment?Android: Sprawdź, czy fragment jest widoczny.

+5

To naprawdę nie jest powielane, ponieważ inne pytanie jest zadawane w kontekście ViewPager, a odpowiedzi odzwierciedlają tym kontekście. To jest bardziej ogólne pytanie. – awy

+1

to nie jest duplikat. –

+0

Rozwiązaniem, które najlepiej sprawdziło się, było http://stackoverflow.com/a/6751537/1816603 –

Odpowiedz

5

Sprawdź kod poniżej:

public class MyFragment extends Fragment 
      @Override 
      public void setMenuVisibility(final boolean visible) { 
       super.setMenuVisibility(visible); 
       if (visible) { 
        ... 
       } 
      } 

To od this thread. Lub możesz również sprawdzić this one.

16
public boolean isFragmentUIActive() { 
    return isAdded() && !isDetached() && !isRemoving(); 
} 

Czy podstęp?

+0

Zwraca wartość false, jeśli wywołuję ją z usługi, ale może robię coś nie tak. – user2538848

46

check if(YourFragment.this.isVisible())

+1

Jak w pasku zadań z zakładkami? Nawigacja jest pomieszana w tym schemacie fragmentów. – Skynet

+0

Jak nawigacja jest pomieszana? Co chcesz osiągnąć? –

+0

Mam pasek zadań Pasek czynności, Fragmenty składają się z kart, Mam przycisk na pasku akcji, który po naciśnięciu przechodzi do innego fragmentu powiedzieć "Informacje o aplikacji". Jak tylko użytkownik przejdzie do informacji, wyłączam go, aby nie był wywoływany nadmiarowo, a następnie włączam go ponownie po naciśnięciu przycisku wstecz, ale mówię, jeśli użytkownik nawiguje do informacji (informacje są wyłączane do momentu naciśnięcia klawisza), ale chcę włącz go ponownie, jeśli nie zostanie naciśnięty powrót, ale nastąpi nawigacja między kartami. – Skynet