我有一个片段,其中托管了 TabLayout 。我想有2个标签,每个标签都是一个片段。我一直在遵循本指南: https://guides.codepath.com/android/google-play-style-tabs-using-tablayout
我要解决的问题是共享状态或片段之间进行通信的方式-我的第一个片段将托管一个地方列表(来自Google地方),而我的第二个片段将托管一个显示它们的地图。我的问题是,当第一个片段中的数据发生更改(例如过滤)时,地图片段也应更新其数据。理想情况下,如果列表视图中未发生任何更改,则无需重新创建地图。
在我的 FragmentPagerAdapter 中,我使用以下方法来检索片段,但如果第一个片段的状态已更改,我无法找出强制更新/重新创建片段的方法
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
if(position == 0){
fragment = findFragment(PlaceListFragment.getTAG());
if(fragment == null) {
fragment = PlaceListFragment.newInstance(0);
}
return fragment;
}else{
fragment = findFragment(MapViewFragment.getTAG());
if(fragment == null) {
fragment = MapViewFragment.newInstance();
}
return fragment;
}
}
答案 0 :(得分:0)
如果要检测隐藏/显示,则只需覆盖
public void onHiddenChanged(boolean hidden) {
if(!hidden){
//When fragment is visible
}
Log.i("my_fragment","setUserVisibleHint: "+isVisibleToUser);
}
或
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser){
//When fragment is visible
}
Log.i("my_fragment","setUserVisibleHint: "+isVisibleToUser);
}
在您的片段中。