我正在尝试按照Google's sample todo app
实施MVP
架构
我遇到的问题是,在NPE
的{{1}}中启动presenter
时,我收到了onResume()
。当我改变设备的方向时会发生这种情况。
我有一个fragments
,其中包含两个静态FragmentPagerAdapter
。
根据我的理解,fragments
意味着在屏幕旋转时保留FragmentPagerAdapter
,这意味着fragments
将保留其fragments
。但是presenters
中的presenters
为空,因此有些内容我不理解。
感谢任何帮助/评论。
编辑:
这是我目前的FragmentPagerAdapter
onResume()
答案 0 :(得分:0)
说实话,Android中的碎片是如此麻烦,经过几年的Android开发,我对他们感到沮丧。我使用这样的东西,在这种情况下会很有用:
public class MyAdapter extends FragmentStatePagerAdapter{
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
switch(pos) {
case GlobalAppKeys.FRAGMENT_HOME:
return HomeFragment.newInstance(pos);
case GlobalAppKeys.FRAGMENT_NEXT:
return NextFragment.newInstance(pos);
default:
return new Fragment();
}
}
@Override
public int getCount() {
return 2;
}
@Override
public int getItemPosition(Object object) {
// refresh all fragments when data set changed
if (object instanceof HomeFragment){
HomeFragment hF = (HomeFragment) object;
if (hF != null) {
hF.updateThisFragment();
}
}
return super.getItemPosition(object);
}
}
答案 1 :(得分:0)
所以事实证明即使用FragmentPagerAdapter
片段在配置更改后实际销毁(例如屏幕旋转),所以我最初的假设是错误的。我通过覆盖并在片段的onDestroy
方法中添加了一个print语句来找到它。
在我的情况下,为了保留演示者,我只需要在片段的setRetainInstance(true)
方法中onCreate
。