我有一个这个架构的Android应用程序:
我有一个Activity:MainActivity,这个包含一个FrameLayout.在这个FrameLayout中,我正在加载一个片段.这个名为Feed.在这个Feed片段中,我有一个谷歌地图片段.所以我想在我的Feed.java上调用getMapAsync但是我无法得到我的地图分区.不知道我怎么能这样做?
MainActivity.java:
protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); Toolbar toolbar = (Toolbar) findVIEwByID(R.ID.toolbar); setSupportActionbar(toolbar); if(savedInstanceState == null){ Fragment fragment = null; Class fragmentClass = null; fragmentClass = Feeds.class; this.setTitle("Fil d\'Actualité"); try { fragment = (Fragment) fragmentClass.newInstance(); } catch (Exception e) { e.printstacktrace(); } FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction().replace(R.ID.flContent, fragment).commit(); }
Feeds.java:
@OverrIDe public voID onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); try { if (GoogleMap == null) { SupportMapFragment mF = ((SupportMapFragment) getChildFragmentManager().findFragmentByID(R.ID.map)); mF.getMapAsync(this); } } catch (Exception e) { e.printstacktrace(); } }
在这段代码中,我的getChildFragmentManager().findFragmentByID(R.ID.map)总是返回null.
我还测试过在onCreate事件或onCreateVIEw事件上编写此代码,但结果总是相同.
谢谢你的回答!
编辑Feeds.xml:
<FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:ID="@+ID/frameTest" tools:context="com.findacomrade.comrade.vIEwController.fragments.Feeds"> <!-- Todo: Update blank fragment layout --> <TextVIEw androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:text="Fil d'actualité" /> <fragment androID:ID="@+ID/map" androID:name="com.Google.androID.gms.maps.MapFragment" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"/> </FrameLayout>activity.xml :<androID.support.design.Widget.CoordinatorLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:app="http://schemas.androID.com/apk/res-auto" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:fitsSy@R_301_6563@windows="true" tools:context="com.findacomrade.comrade.vIEwController.MainActivity"> <androID.support.design.Widget.AppbarLayout androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:theme="@style/Apptheme.AppbarOverlay"> <androID.support.v7.Widget.Toolbar androID:ID="@+ID/toolbar" androID:layout_wIDth="match_parent" androID:layout_height="?attr/actionbarSize" androID:background="?attr/colorPrimary" app:popuptheme="@style/Apptheme.PopupOverlay" /> </androID.support.design.Widget.AppbarLayout> <!--<include layout="@layout/content_main" />--> <FrameLayout androID:ID="@+ID/flContent" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:layout_margintop="?attr/actionbarSize"/></androID.support.design.Widget.CoordinatorLayout>
解决方法:
您正在使用getSupportFragmentManager(),因此您的MapFragment也应来自支持库
<fragment androID:ID="@+ID/map" androID:name="com.Google.androID.gms.maps.SupportMapFragment" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"/>
总结 以上是内存溢出为你收集整理的java – 在片段布局android中获取片段全部内容,希望文章能够帮你解决java – 在片段布局android中获取片段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)