我的Fragment
包含TextView
和一个自定义计时器 View
。有一个带有Fragment
回调方法的接口,用于实现接口的方法来监听自定义计时器 View
更改,然后更新TextView
。
将侦听器接口附加到自定义计时器 View
:
@Override
protected void onAttachedToWindow()
{
super.onAttachedToWindow();
mTimerViewPager =
(TimerViewPager) ((Activity) getContext()).findViewById(R.id.view_page_timer);
TimerPagerAdapter timerPagerAdapter = mTimerViewPager.getAdapter();
mListener = (TimerListener) timerPagerAdapter.getFragment(mTimerViewPager.getCurrentItem());
}
一开始,ViewPager包含一个Fragment
和回调更新TextView
。但是,当我再添加一个Fragment
并返回第一个时,回调会在第二个中更新TextView
。添加第三个后,第二个不更新第三个...所以它不像我缺少“-1”操作。
在TimerPagerAdapter
(FragmentStatePagerAdapter
的扩展名)中添加新片段的功能:
public int addPage(Fragment fragment)
{
int position = mCount;
mCount++;
fragments.put(position, fragment);
notifyDataSetChanged();
return position;
}
mCount
是页数。 fragments
是SparseArray<Fragment>
我不知道如何获得适当的当前项目。我也不确定ViewPager
是否是动态添加/删除的好主意(但我没有找到任何其他替代方案。标签可能?)
我提供了我认为必要的代码。如果您需要更多,请在评论中告诉我。
答案 0 :(得分:0)
答案 1 :(得分:0)
感谢@NguyễnHoàiNam评论,我能够在片段和自定义计时器视图之间实现正确的合作。而不是onAttachedToWindow
我使用了侦听器的动态设置:
public void setTimerListener(TimerListener timerListener)
{
mListener = timerListener;
}