2015-09-22 36 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

你需要把這個方法放在每個片段中,所以當fragement是可見的或當前的fragement時它會被調用。這樣

Fragment visibleFragment=getCurrentFragment(); 

@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.if任何混亂,然後覺得免費問thankx :)

+0

R.id.content_frame是在活動中添加片段的視圖嗎? –

相關問題