cos*_*os4 6 android google-maps-api-2 google-play-services supportmapfragment
我正在尝试从SupportMapFragment获取地图,但它返回null.从我读到的这可能是因为片段尚未完全显示,因此没有地图存在?!我尝试使用executePendingTransactions()修复它,但到目前为止没有成功.
任何想法如何解决它?
这是代码
private GoogleMap map;
private SupportMapFragment mapFragment;
@Override
public void onCreate( Bundle savedInstanceState ) {
//...
super.onCreate( savedInstanceState );
setContentView( R.layout.screen_mission2 );
GoogleMapOptions mapOptions = new GoogleMapOptions();
mapOptions.mapType(GoogleMap.MAP_TYPE_NORMAL)
.compassEnabled(true)
.rotateGesturesEnabled(false)
.tiltGesturesEnabled(false);
android.support.v4.app.FragmentManager myFragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentManager.enableDebugLogging(true);
mapFragment = SupportMapFragment.newInstance(mapOptions);
FragmentTransaction fragmentTransaction = myFragmentManager.beginTransaction();
fragmentTransaction.add(R.id.mapFragment, mapFragment);
fragmentTransaction.commit();
myFragmentManager.executePendingTransactions();
if(mapFragment == null) Base.log("mapFragment==null");
if(map==null){
map = mapFragment.getMap();
Base.log("map should have been initialized");
if(map==null) Base.log("map still null");
}
}
Run Code Online (Sandbox Code Playgroud)
和布局文件:
<fragment
android:id="@+id/mapFragment"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)
它返回以下日志
V/FragmentManager(24224): add: SupportMapFragment{4078c4b8 id=0x7f06003d}
V/FragmentManager(24224): Allocated fragment index SupportMapFragment{4078c4b8 #1 id=0x7f06003d}
V/FragmentManager(24224): moveto CREATED: SupportMapFragment{4078c4b8 #1 id=0x7f06003d}
D/EMR (24224): map should have been initialized
D/EMR (24224): map still null
Run Code Online (Sandbox Code Playgroud)
据我所知,这可能是因为片段尚未完全显示,因此不存在地图?
正确的。
有什么想法如何修复它吗?
通过调用实际使用布局文件,setContentView()并删除所有内容FragmentTransaction。然后您可以检索已创建的SupportMapFragment并使用它:
setContentView(R.layout.activity_main);
SupportMapFragment mapFrag=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.mapFragment);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10728 次 |
| 最近记录: |