【发布时间】:2012-03-21 21:45:18
【问题描述】:
我正在使用 ViewPager (http://developer.android.com/reference/android/support/v4/view/ViewPager.html) 和片段中的一些图像,并且因为我想支持缩放,所以我正在扩展 ViewPager 并覆盖:
onInterceptTouchEvent
接下来就是判断图片是否放大了,如果放大了就让它处理事件,否则就把事件传给super。
我的主要问题,也是我问题的核心,是确定当前片段和我的 ViewPager 之间的最佳和最有效的通信方式?
目前我在当前项目更改时使用以下内容:
Fragment photoFrag = (Fragment) getAdapter().instantiateItem(this, getCurrentItem());
但感觉好像应该有更好的方式在 Fragment 和 ViewPage 之间进行通信,但我遗漏了一些东西。
编辑:抱歉,我确实忘记提及我希望通信来回,所以我希望片段能够与 ViewPager 和 Pager 通信与片段。我看到了一个示例(工作中的 URL),其中使用接口类在当前 Fragment 和 ViewPager 之间进行通信。所以底层图片需要告诉 ViewPager 什么时候应该处理 Scroll,什么时候不需要,什么时候伪造滚动等等。
我在 Android 环聊期间急于提出这个问题
谢谢
【问题讨论】:
-
对于一个稍微好一点的讨厌的黑客,请参阅stackoverflow.com/a/9293207/115145
-
@CommonsWare 感谢您的提示,这两种方法看起来非常相似,因为 instantiateItem 在内部几乎做同样的事情。奇怪的是没有更清洁的方法来做到这一点。
-
“奇怪的是没有更干净的方法来做到这一点。” -- 同意。
-
这是我很多代码的基础:multitouchdesign.wordpress.com/2011/11/19/…
-
不要将其与
FragmentStatePagerAdapter一起使用。FragmentStatePagerAdapter背后的要点是允许不可见的碎片被垃圾收集。您链接到的解决方案中的HashMap将禁止此操作。您可以通过使用地图的SoftReference值来实现它。
标签: android fragment android-viewpager