Context: SubFragment1
所需结果:在onRefresh中,我希望x等于== z,在示例中z为1。
问题结果:
解决方案删除SubFragment1的多个实例FragmentPagerAdapter
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new SubFragment1(...);
case 1:
return new SubFragment1(...);
case 2:
return new SubFragment1(...);
default:
return null;
}
}
问题:任何想法如何在viewPager中使用一个片段的多个实例会破坏片段的逻辑或标准生命周期行为?没有什么是静态的,变量是私有的。
是的,伙计,我曾经一团糟。
所以我做的是,我使用了五个相同的SubFragment
实例,但是我遇到了麻烦。基本上,我有五个具有相似功能(责任)但布局几乎相同(UI设计)的不同屏幕。结果,我决定使用相同的SubFragment
只是为了促进Code Reusability的原理。
起初,需求很小,一切都很顺利,但是后来随着变更(要求)不断堆积,我做了噩梦般的管理。
让我举个例子:
所以,假设有一种方法checkLocationAndNotify()
,它将检查位置是否可用,如果找不到位置,则将显示Dialog
。
现在,我只想在SubFragment
上打开我的第三个实例ViewPager
(用户轻扫并在ViewPager
上到达第三个子代)时才调用此方法。
因此我将此方法调用放置在onViewCreated()
的SubFragment
生命周期方法中。繁荣,这是我的第一个麻烦。用户打开任何ViewPager
子级后,无论SubFragment
的实例如何,都将调用此方法,并始终显示LocationDialog
。
[要解决此问题,我必须对childPosition
中的ViewPager
进行检查。另外,我只想在某些逻辑上仅对SubFragment
的特定实例起作用,就必须重复此操作。
黄金忠告:
如果在Fragments
内部也处理ViewPager
(甚至责任稍有不同),请使用不同的Fragments