我通过ViewPager在托管它们的活动上有两个片段。 当我更新片段A的数据时,它不会显示在屏幕上。 所以我认为我应该使用生命周期...我将所有生命周期回调放置在定位中,当我滑过片段时没有调用。 当你在它们之间滑动时,片段是否会改变生命周期? 那么你如何刷新他们的内容呢?
我的代码作为例子:
片段b: 当单击一个按钮时,它需要更新片段A中的列表,片段应该显示它。
private RemoveFromHistoryInterface removeFromHistory = new RemoveFromHistoryInterface()
{
@Override
public void removeFromHistory( List<Password> passwordsToRemove )
{
PagerActivity.removeFromHistory( passwordsToRemove );
}
};
public interface RemoveFromHistoryInterface
{
public void removeFromHistory( List<Password> passwordsToRemove );
}
...
...
removeFromHistory.removeFromHistory( listToRemove );
寻呼机活动(托管两个片段)
public static void removeFromHistory( List<Password> passwordsToRemove )
{
MainFragment.fromHistoryToMain( passwordsToRemove );
}
片段A:
@
Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
passwords = PasswordManager.getInstance().getPasswords();
passwordsList = Password.getPasswordsList();
}
...
...
public static void fromHistoryToMain( List<Password> listBackToMain )
{
passwordsList.addAll( 0, listBackToMain );
}
viewpager适配器:
public class ViewPagerAdapter extends FragmentPagerAdapter
{
final int PAGE_COUNT = 2;
private String tabTitles[] = new String[] { "Main", "History" };
public ViewPagerAdapter( FragmentManager fragmentManager )
{
super( fragmentManager );
}
@Override
public int getCount() {
return PAGE_COUNT;
}
@Override
public Fragment getItem( int position )
{
switch ( position )
{
case 0:
return new MainFragment();
case 1:
return new HistoryFragment();
}
return null;
}
@Override
public CharSequence getPageTitle( int position )
{
return tabTitles[position];
}
}
答案 0 :(得分:0)
如果您正在寻找一种方法来了解您的片段在屏幕上何时可见/您可以将其添加到您的片段中:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser)
{ do_your_stuff }
else { }
}