我有一个片段,其中向我传递了两个工厂,这些工厂将用于在其内部创建组件。片段看起来像这样:
public static MyFragment newInstance(Factory1 factory, Factory 2, factory2) {
MyFragment frag = new MyFragment();
frag.factory1 = factory1;
frag.factory2 = factory2;
return frag;
}
这些片段是在父活动中创建的,如下所示:
MyFagment frag1 = MyFragment.newInstance(new Factory1(), new Factory2());
. . .
MyFragment fragN = MyFragment.newInstance(new Factory1(), new Factory2());
在我的父级活动中,当调用onSaveInstanceState()
时,我将片段放到管理器上,以onCreate()
方法进行恢复
onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
getSupportFragmentManager().putFragment(outState, "frag1", frag1);
...
}
然后,当活动再次运行时,我尝试像这样在onCreate()
中进行恢复:
if(savedInstanceState != null) {
frag1 = (MyFragment)getSupportFragmentManager().getFragment(savedInstanceState, "frag1");
}
与此有关的问题是,还原的片段实例上的两个工厂属性都等于null。我不明白为什么会这样。我想在这里利用依赖注入,因为我觉得它非常适合我的应用程序的要求。我在这里有东西吗?我是否需要在其过时的片段中做点什么?任何见识将不胜感激。我也希望在本地使用而不使用匕首之类的工具。谢谢!