【发布时间】:2015-07-15 15:01:36
【问题描述】:
我在一个由 ViewPager 托管它们的活动上有两个片段。 当我更新 Fragment 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];
}
}
【问题讨论】:
-
这取决于您如何填充 ViewPager 片段 - 例如通过光标...
-
用我的代码摘要编辑了帖子。我没有使用光标。我现在有什么选择?
标签: android android-fragments android-viewpager lifecycle