Android ViewPager和当前片段之间的通信

Android ViewPager和当前片段之间的通信,android,fragment,android-viewpager,Android,Fragment,Android Viewpager,我正在使用ViewPager(),其中包含一些片段中的图像,因为我想支持缩放,所以我扩展了ViewPager并覆盖: onInterceptTouchEvent 下一步是确定是否放大图像。如果它被放大,我会让它处理事件,否则我会将事件传递给super 我的主要问题,也是我问题的核心,是确定在当前片段和我的ViewPager之间进行通信的最佳和最有效的方式 当前项目更改时,我正在使用以下命令: Fragment photoFrag = (Fragment) getAdapter().instan

我正在使用ViewPager(),其中包含一些片段中的图像,因为我想支持缩放,所以我扩展了ViewPager并覆盖:

onInterceptTouchEvent
下一步是确定是否放大图像。如果它被放大,我会让它处理事件,否则我会将事件传递给super

我的主要问题,也是我问题的核心,是确定在当前片段和我的ViewPager之间进行通信的最佳和最有效的方式

当前项目更改时,我正在使用以下命令:

Fragment photoFrag = (Fragment) getAdapter().instantiateItem(this, getCurrentItem()); 
但感觉似乎应该有更好的方式在片段和ViewPage之间进行通信,我遗漏了一些东西

编辑:很抱歉,我忘了提及我希望通信能够来回进行,因此我希望片段能够与ViewPager通信,而页面能够与片段通信。我看到了一个示例(URL仍然有效),其中使用了一个接口类在当前片段和ViewPager之间进行通信。因此,底层图像需要告诉ViewPager什么时候应该处理滚动,什么时候不需要,什么时候伪造滚动,等等

在安卓系统的闲逛中,我急于提出这个问题


谢谢

为什么不使用发送/接收事件?注册片段以接收事件,这样就不必担心片段不存在。不要忘了在onResume/onPause中注册/注销receiver

要获得稍微好一点的恶意攻击,请参阅@commonware谢谢你的提示,这两种方法看起来非常相似,因为instanceItem在内部几乎做相同的事情。奇怪的是,没有更干净的方法来做这件事。“奇怪的是,没有更干净的方法来做这件事。”——同意。这就是我的很多代码的基础:不要将它与
片段StatePageRadapter
一起使用。
FragmentStatePagerAdapter
背后的要点是允许对不可见的片段进行垃圾收集。您链接到的解决方案中的
HashMap
将禁止此操作。你可以通过使用地图的
SoftReference
值来完成它。好主意,用大锤来敲开螺母,这是安卓的方式?这是什么“大锤式”呢?代码非常简单,模式干净合法