java - 如何从 Activity 监听 FragmentStatePagerAdapter setPrimaryItem

标签 java android android-studio

我刚刚开始编写 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/

相关文章:

java - 日期格式到日期时间格式器

java - 我应该依赖数据库进行 Hibernate 属性验证吗?

java - 我的 java 程序的 SQL 语法错误

android - 使用 WorkManager 下载文件

java - 设置 Activity 标题前颜色更改

android - 在 Android Studio 中运行重建项目后会发生什么?

与 HAMR 配合使用的 Java 虚拟机版本?

android - 为什么视频不使用 ffmpeg 在 android 中保存给定路径?

java - Android - 访问 list 中的提供者标签并更改其属性值

android-studio - Android Studio 显示方 block 而不是文本