刷新ViewPager Fragment中的数据
这是我的情景:
我的Activity中有ViewPager,它包含6个片段。我通过用手指轻扫禁用了分页,所以每当我想要滑动时我都使用相关按钮并且:
viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true);
在每个刷过的片段中(刷卡完成后)我想向我的服务器发送一个GET请求并获取一些数据并在该片段中显示它。这样做:
第一种方法:我在片段中使用此代码,片段一旦可见就会运行:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser)
{
sendGetRequest();
}
}
但是,这是一个问题:setUserVisibleHint正好在片段可见的情况下执行,因此滑动的动画带来了一些滞后(它不够平滑)。
所以我使用了Second Approach:我在托管活动中向ViewPager 添加了OnPageChangeListener(),如下所示:
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
int CurrentPossition = 0;
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }
@Override
public void onPageSelected(int position) {
CurrentPossition = position;
}
@Override
public void onPageScrollStateChanged(int state) {
if(state == ViewPager.SCROLL_STATE_IDLE && CurrentPossition != 0){
Toast.makeText(getBaseContext(),"finished" , Toast.LENGTH_SHORT).show();
try{
new fragment_two().sendGetRequest();;
}catch(Exception ex){
ex.printStackTrace();
}
}
}
});
它工作得很好,并且在刷卡完成后立即显示吐司,但与完全可见的片段不同,当sendGetRequest()运行时,我得到NullPointerException。
慕田峪9158850
翻阅古今
梵蒂冈之花