2015-09-22 35 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是在活动中添加片段的视图吗? –

相关问题