Java 如何从活动中侦听FragmentStatePagerAdapter setPrimaryItem

Java 如何从活动中侦听FragmentStatePagerAdapter setPrimaryItem,java,android,android-studio,Java,Android,Android Studio,我刚开始编写android,我在一个片段中有一个ViewPager,我想做的是如何从它的活动中侦听ViewPagerAdapter的setPrimaryItem事件,这样我就可以将数据从适配器传递到活动 我尝试使用接口,但我不知道如何在适配器中获取活动。这是基本的观察者模式,您会经常遇到它。我这样做是为了FragmentPagerAdapter,FragmentStatePagerAdapter应该也能工作 public abstract class ObservableFragmentPage

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


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

这是基本的观察者模式,您会经常遇到它。我这样做是为了
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

的工作方式相同。我尝试使用接口,但由于某些原因,它在适配器中不起作用。你能发布代码吗?我的意思是它不起作用,因为我无法从那里获取活动,或者我不知道如何在适配器中实现接口。谢谢你,你救了我一天,让我不知道如何使用接口。回答得好!如果您希望在片段本身中了解它,则会自动调用setUserVisibleHint。