在onCreate方法中,我正在利用它SupportMapFragment来显示地图.
SupportMapFragment fragment = new SupportMapFragment();
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, fragment).commit();
Run Code Online (Sandbox Code Playgroud)
与此相关,我想添加一个标记.问题是当调用getMap为null时,我什么时候可以再试一次?是否有我可以注册的事件或我的方法本身是错的?
mMap = ((SupportMapFragment)(getSupportFragmentManager().findFragmentById(R.id.map))).getMap();
if(mMap == null)
//what do I do here?
Run Code Online (Sandbox Code Playgroud)
事实上,地图显示在手机上,但我似乎没有运气获得添加标记的参考.
更新:
我SupportMapFragment通过构造函数创建的原因是因为典型的setContentView崩溃并且无法正常工作.这让我处于困境,在那里我无法获得我在onCreate方法中的参考,因为我当时正在创建SupportMapFragment它.在进一步调查中,似乎我的setContentView问题是没有将Google-play-services jar和module/src设置为整个项目的一部分的副产品.完成这些后,setContentView现在可以工作,我可以getMap()像我期望的那样获得参考.
lots.xml ...
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)
LotsActivity.java ...
public class LotsActivity extends FragmentActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lots);
GoogleMap mMap;
mMap = ((SupportMapFragment)(getSupportFragmentManager().findFragmentById(R.id.map))).getMap();
if(mMap == null) …Run Code Online (Sandbox Code Playgroud)