在viewpager

时间:2016-08-22 05:19:43

标签: android android-layout android-studio android-fragments android-viewpager

我有一个动态的viewpager,每个片段都有一个播放按钮,点击后会变为暂停按钮。

现在我要做的是,当用户点击任何其他片段中的播放按钮时,最后播放片段中的播放按钮应该从暂停播放到播放,即我希望播放按钮仅在一个片段中一次激活休息应该处于默认状态。

我尝试使用以下代码执行此操作

      pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            previous =  current;
            current = position;



            try{
                if(position!=0)
                {
                    SwipeFragItem yourFragment =      (SwipeFragItem)mPageAdapter.getItem(previous);
                    yourFragment.refresh();

                }

            }
            catch (Exception e){
                Crashlytics.logException(e);
            }


        }

        @Override
        public void onPageSelected(int position) {

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

在70%的情况下执行我的任务,但在30%的情况下不会刷新。我已经确保它在这30%的情况下被执行,并且它不会抛出任何异常。

如果您发现我的方法不合适,请以其他方式提出建议。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

我能想到的一种方法是使用事件总线。就像是: GreenbotOtto

通过注册您在视图寻呼机中添加的所有片段来收听按下播放按钮时触发的事件,将通知所有片段。该事件显然需要有一个标识符,以便您知道按下了哪个片段的播放按钮。如果它不是来自同一个片段,则可以将该按钮设置回默认状态。同样,这只是我能想到的一种方式。