解释我的问题:
我花了很多时间,但是我不能让它工作。我在主要的Activty中使用(Tabhost)包含三个片段的视图寻呼机。我的ViewPagerAdapter类扩展FragmentStatePagerAdapter
。
我面临的问题是,当我滑动视图时,我的OnResume()
方法未被调用。我想在刷卡时更新viewpager片段的视图。
我的OnResume()
方法仅在我点击ListView
项目然后再次返回时调用。但是当我在ListView上按OnLongClick时,其他片段不会刷新。
注意:我知道这个问题之前已经提过,但这些解决方案都没有帮助我。
注2:当我的手机进入睡眠状态时,解锁手机第二个片段后呼叫onResume()
第一个标签中的OnResume()
方法:
@Override
public void onResume() {
super.onResume();
adapterLogin.notifyDataSetChanged();
}
第二个标签中的OnResume()
方法:
@Override
public void onResume() {
super.onResume();
adapterLogin.UpdateView(databaseHelper.getAllVoitureFavourite(1,username));
adapterLogin.notifyDataSetInvalidated();
adapterLogin.notifyDataSetChanged();
}
UpdateView()
中的BaseAdapter
方法:
public void UpdateView(List<Voiture> items) {
this.voitureList = items;
notifyDataSetInvalidated();
notifyDataSetChanged();
}
我的应用程序的屏幕截图,以便更好地理解mu问题:
任何帮助将不胜感激。
答案 0 :(得分:9)
使用setUserVisibleHint(boolean isVisibleToUser)。
{{1}}
答案 1 :(得分:1)
您描述的行为是ViewPager的工作方式,它没有任何问题。
另外,如果你检查ViewPager类的源代码,你会注意到offscreenPageLimit的最小值是1.将它设置为0只是什么都不做,因为它回退到默认值1。
您可以做的是添加一个TabHost.OnTabChangeListener,以便在每次滑动时都调用适当的方法。
mTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
switch (mTabHost.getCurrentTab()) {
case 0:
//fragment 1 update()
break;
case 1:
//fragment 2 update()
break;
case 2:
//fragment 3 update()
break;
}
}
});
答案 2 :(得分:0)
如果您的ViewPager只有2个页面,那么在滑动过程中两个片段都不会暂停,并且永远不会调用onResume()。
我相信默认情况下它始终会保留邻居页面,这意味着页面限制为1。
您可以尝试将其保留的页数设置为0.
mViewPager = (ViewPager)findViewById(R.id.pager);
mViewPager.setOffscreenPageLimit(0);