【问题标题】:Refreshing fragment which is not in focus in viewpager刷新视图页面中未聚焦的片段
【发布时间】:2016-08-22 05:19:43
【问题描述】:

我有一个动态查看器,它在每个片段上都有一个播放按钮,点击后会变成暂停按钮。

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

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

      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% 的情况下被执行,并且不会抛出任何异常。

如果您觉得我的方法不合适,请提出任何其他方法。

任何帮助将不胜感激。在此先感谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 2016-05-17
      相关资源
      最近更新 更多