如何从Activity中侦听FragmentStatePagerAdapter setPrimaryItem

时间:2015-06-02 07:02:38

标签: java android android-studio

我刚刚开始编写android,我在一个片段中有一个ViewPager,我想要做的是如何从它的活动中监听ViewPagerAdapter的setPrimaryItem事件,这样我就可以将数据从适配器传递给活动。

我尝试使用界面,但我不知道如何在适配器中获取活动。

1 个答案:

答案 0 :(得分:2)

这是基本的观察者模式,你会遇到很多。我为FragmentPagerAdapter做了这样的事情,FragmentStatePagerAdapter也应该这样做。

public abstract class ObservableFragmentPagerAdapter extends FragmentPagerAdapter {

    private Fragment mCurrentFragment = null;
    private OnPrimaryItemChangedListener mPrimaryItemListener = null;

    public ObservableFragmentPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public void setPrimaryItem(ViewGroup container, int position, Object object) {
        super.setPrimaryItem(container, position, object);

        if (mCurrentFragment != object) {
            Fragment newFragment = (Fragment) object;
            if (mPrimaryItemListener != null) {
                mPrimaryItemListener.onPrimaryItemChanged(mCurrentFragment, newFragment);
            }
            mCurrentFragment = newFragment;
        }
    }

    public void setOnPrimaryItemChangedListener(OnPrimaryItemChangedListener listener) {
        mPrimaryItemListener = listener;
    }

    public interface OnPrimaryItemChangedListener {
        void onPrimaryItemChanged(Fragment oldFragment, Fragment newFragment);
    }
}

订阅的工作方式与例如设置OnClickListener