在页面查看器中获取活动片段

时间:2013-07-05 14:25:54

标签: android android-fragments android-viewpager android-fragmentactivity

是否可以在viewPager的片段中调用方法,当它是活动页面时? 或者,如果片段是当前页面,则片段中的布尔值可能不同? (例如:if(isActivePage))。

我想在asynctask中加载一些数据,并在加载时显示ProgressDialog。但仅适用于活动页面(用户应该能够调整,片段被缓存,他访问过,而不是左侧和右侧的页面......)viewPager.setOffscreenPageLimit(0)不起作用({{ 3}}),我尝试设置OnPageChangeListener,但你不能操纵那里的实际片段的任何属性。

请注意,我在FragmentActivity onCreate中尝试了... fragments = new ArrayList<ArticlePageFragment>(pages); for (int i = 0; i < pages; i++) { ArticlePageFragment fragment = new ArticlePageFragment(); Bundle args = new Bundle(); ... fragment.setArguments(args); fragments.add(fragment); } viewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int position) { if (position > 0) fragments.get(position - 1).isActivePage = false; if (position < pages) fragments.get(position + 1).isActivePage = false; fragments.get(position).isActivePage = true; } ... }

ArticlePageFragment

(在isActivePage ViewPager中只是一个公共布尔值...)

如果不可能,也许有另一种方式,没有ScreenSlidePagerAdapter extends FragmentStatePagerAdapterprivate class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { public ScreenSlidePagerAdapter(FragmentManager fm) { super(fm); } public Fragment getItem(int position) { return fragments.get(position); } @Override public int getCount() { return pages; } }

修改

{{1}}

1 个答案:

答案 0 :(得分:0)

您需要使用ViewPager的适配器。你需要这样的设置......

// in your fragment
public boolean isActive(){
     return (mPageAdapter.getPosition() == MyFragment.POSITION);
}

// in your adapter
private pagePosition=0; // or initial position
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    pagePosition = position;
}