我刚刚开始编写 android 代码,我在 fragment 中有一个 ViewPager,我想要做的是如何从其 Activity 中监听 ViewPagerAdapter 的 setPrimaryItem 事件,以便我可以将数据从适配器传递到 Activity 。
我尝试使用接口(interface),但我不知道如何获取适配器内的 Activity 。
最佳答案
这是基本的观察者模式,您会经常遇到它。我对 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
。
关于java - 如何从 Activity 监听 FragmentStatePagerAdapter setPrimaryItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30589476/