【发布时间】:2014-06-16 21:35:45
【问题描述】:
正如标题所说:是否有可能在活动的 onCreate() 方法中初始化所有 UI 元素的当前可见片段? 我正在使用处理业务逻辑和 UI 事件的单独控制器类实现模型、视图和控制器的分离。因此他们需要对当前片段的引用。这些控制器在活动的 onCreate() 方法中初始化,因此我需要该方法中的初始化片段。
我欢迎任何形式的建议:)
编辑:
添加一些代码以便更好地理解: 我正在使用 dagger 进行依赖注入,并希望在 onCreate() 方法中执行此操作。正如我之前所说,我的控制器需要一个 mapView 元素。这就是为什么我想要一个初始化了 mapView 元素的片段。
MapActivity#onCreate(Bundle):
public void onCreate(Bundle savedInstance) {
super.onCreate(savedInstance);
setContentView(R.layout.activity_layout);
MyMapFragment fragment = new MyMapFragment();
getFragmentManager().beginTransaction()
.add(R.id.activity_container, fragment, "fragment")
.commit();
ObjectGraph.create(new Module(fragment.getMapView())).inject(this);
}
activity_layout.xml
<android.support.v4.widget.DrawerLayout>
<FrameLayout
android:id="@+id/activity_container"
... />
<ListView .../>
</android.support.v4.widget.DrawerLayout>
fragment_layout.xml
<RelativeLayout>
<org.osmdroid.map.MapView
android:id"@+id/mapview"
... />
<Button .../>
</RelativeLayout>
第二次编辑: 所以这似乎是不可能的......是的反对票^^
【问题讨论】:
-
你想做的事是不可能的。再次检查 Fragments 和 Activity 的生命周期。
-
关于片段和活动的生命周期如何交互的信息很少,所以我认为 onCreateView() 会在片段创建时被正确调用...