Android 是否可以访问片段';从Activity';s onCreate
正如标题所说:是否可以在活动的onCreate()方法中初始化当前可见的片段和所有UI元素? 我使用处理业务逻辑和UI事件的独立控制器类实现了模型、视图和控制器的分离。因此,它们需要对当前片段的引用。这些控制器在活动的onCreate()方法中初始化,因此我需要该方法中的初始化片段 我欢迎任何建议:) 编辑: 添加一些代码以更好地理解: 我正在使用dagger进行依赖项注入,并希望在onCreate()方法中实现这一点。正如我之前所说,我的控制器需要一个映射视图元素。这就是为什么我想初始化一个带有mapView元素的片段 MapActivity#onCreate(Bundle): activity_layout.xmlAndroid 是否可以访问片段';从Activity';s onCreate,android,android-fragments,Android,Android Fragments,正如标题所说:是否可以在活动的onCreate()方法中初始化当前可见的片段和所有UI元素? 我使用处理业务逻辑和UI事件的独立控制器类实现了模型、视图和控制器的分离。因此,它们需要对当前片段的引用。这些控制器在活动的onCreate()方法中初始化,因此我需要该方法中的初始化片段 我欢迎任何建议:) 编辑: 添加一些代码以更好地理解: 我正在使用dagger进行依赖项注入,并希望在onCreate()方法中实现这一点。正如我之前所说,我的控制器需要一个映射视图元素。这就是为什么我想初始化一个带
<android.support.v4.widget.DrawerLayout>
<FrameLayout
android:id="@+id/activity_container"
... />
<ListView .../>
</android.support.v4.widget.DrawerLayout>
<RelativeLayout>
<org.osmdroid.map.MapView
android:id"@+id/mapview"
... />
<Button .../>
</RelativeLayout>
fragment_layout.xml
<android.support.v4.widget.DrawerLayout>
<FrameLayout
android:id="@+id/activity_container"
... />
<ListView .../>
</android.support.v4.widget.DrawerLayout>
<RelativeLayout>
<org.osmdroid.map.MapView
android:id"@+id/mapview"
... />
<Button .../>
</RelativeLayout>
第二次编辑:
所以这似乎是不可能的。。。是的,对于下一票^^您可以在活动中创建一个接口,并在片段上实现它…默认情况下,否。在活动
onCreate()
运行时,片段尚未附加到活动
访问片段视图的正确位置是片段本身。考虑将控制器分配放入其生命周期内的片段中,如<代码> OnCeCaleVIEW()/<代码>或<代码> OnVIEW()/代码> < /P>
可以使用或在活动生命周期中运行
super.onStart()
后隐式运行排队的片段事务。之后,片段视图可以在活动视图层次结构中访问。在您的onCreate
方法中添加以下内容(我使用了textview作为示例):
确保在片段的onCreateView
方法中返回rootView
,如下所示:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_activity,
container, false);
return rootView;
}
我知道让您的片段从主活动访问其视图的想法是不好的。但是,此解决方案可能会满足您的需要。这将永远阻止UI线程,应用程序将被“应用程序无响应”杀死。@laalto我认为它将在while循环中停留一段时间,直到活动收到片段
rootView
。它不会永远阻止应用程序。我不知道你的意思是不是说不能保证从片段返回rootView。您的看法是什么?片段事务将在您阻止的同一UI线程上执行。由于Android仅在一个线程上运行,因此不会创建该视图。你会永远封锁这个线索的,我很抱歉,但这对我来说太神秘了;)你们知道接口吗?如何创建和使用它?是的,我知道接口和如何实现它们。你能详细说明一下你要做什么吗?1.在Oncreate中创建一个片段…2。实现此onFragment..3.在fragment类内的实现中更新片段UI..很抱歉,我仍然不理解您的方法是什么。无法在片段中执行此操作,因为活动是注入的起点。。。我认为还有另一种选择,而不是使用来自片段的回调。这对我来说似乎是个笨拙的解决方案…你想做的是不可能的。再次检查片段和活动的生命周期。关于片段和活动的生命周期如何交互的信息很少,因此我认为在创建片段时会正确调用onCreateView()。。。