gpt4 book ai didi

android - OnpageScrolled 在 Viewpager 中工作两次

转载 作者:行者123 更新时间:2023-12-03 02:40:50 26 4
gpt4 key购买 nike

我有一个ViewPager,其中包含两个不同的 fragment 。我们假设它们的名字是A和B fragment 。这些 fragment 之一具有日期验证过程。当用户尝试从 A 导航到 B 时,如果所选日期晚于今天,ViewPager 将返回到 fragment A(拒绝导航到 B)。

这是通过 onPageScrolled 提供的,如下所示。

@Override
public void onPageScrolled( int position, float positionOffset, int positionOffsetPixels ) {

if ( position == 0 ) {
if ( positionOffset > 0.5 && getLastCycleDay() > DateHelper.CreateToday( false ) ) {
mPager.setCurrentItem( 1 );
SnackbarHelper.newInstance().snackbarshow( IntroActivity.this, resources.getString( R.string.dont_allow_new_cycle ) );
}

}

我的问题是哪个 onPageScrolled 工作两次,当我想运行其中的一个方法时,这个方法也工作两次。

如何防止这种情况发生?

最佳答案

如果多次连接,事件将触发多次。在 myPager.setOnPageChangeListener(或 addOnPageChangeListener 方法,具体取决于 API 版本)方法上放置一个断点,该方法会连接寻呼机的事件处理程序。检查为什么它被连线两次(如果是的话)。

根据您上面的描述,可能存在引用问题,并且事件针对 fragment A 的不同实例。

尝试在 onPageScrolled 事件处理程序中的第一行代码上放置一个断点,然后使用“评估代码 fragment ”窗口(“运行”菜单 ->“评估表达式”),键入并评估“this”。检查第一次和第二次触发的 ViewPager 实例是否是同一个对象(通过使用实例 ID,如下圈出):

Instance of ViewPager

如果数字不同,则意味着 fragment 有两个实例,每个实例都有自己的事件被触发,并且需要检查 fragment 的设置和拆除方式。

如果没有更多代码,很难说。

关于android - OnpageScrolled 在 Viewpager 中工作两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29512439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com