2015-09-22 3 views
0

У меня есть MainActivity и внутри этой деятельности у меня есть четыре fragments. Название фрагмента A,B,C,D.Как получить текущий видимый фрагмент в android?

Fragment currentVisibleFragment = getSupportFragmentManager().findFragmentByTag(null); 

, используя эту строку выше я пытаюсь получить текущую видимую fragment, но я не могу получить текущий видимый фрагмент.

+0

передать этот Http: //stackoverflow.com/a/9295085/2783386 –

+0

вы установили тег фрагмента? –

ответ

2
private Fragment getVisibleFragment() { 
     FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager(); 
     List<Fragment> fragments = fragmentManager.getFragments(); 
     for (Fragment fragment : fragments) { 
      if (fragment != null && fragment.isVisible()) 
       return fragment; 
     } 
     return null; 
    } 

Использование

if (getVisibleFragment() instanceof HomeScreen) { 
Do your stuff.. 
} 

Были MainActivity является держателем и HomeScreen ваш один из фрагмента.

0

вам нужно поместить этот метод в каждый фрагмент, чтобы он был вызван, когда на экране видны фрагментации или текущее смещение.

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

    } 
} 
5
Fragment getCurrentFragment() 
{ 
    Fragment currentFragment = getSupportFragmentManager() 
      .findFragmentById(R.id.content_frame); 
    return currentFragment; 
} 

вызова функция как этот

Fragment visibleFragment=getCurrentFragment(); 

вызова этой функции вы можете получить текущую видимый fragment.if Любой путаницы тогда сочувствует спросить Thankx :)

+0

R.id.content_frame - это вид, в который добавлен фрагмент активности? –

Смежные вопросы