对于我不知道如何解决的问题,我真的需要帮助。
我正在为父亲申请,我将与Map一起工作。
该问题特定于while循环内的mapFrag.getMapAsync()
中。
@Override
public void onResume(){
super.onResume();
new Thread(){
public void run(){
while ( mapFrag.getMapAsync() == null){
try {
Thread.sleep(1000);
} catch (InterruptedException e){
e.printStackTrace();
}
}
runOnUiThread(new Runnable() {
@Override
public void run() {
configMap();
}
});
}
}.start();
}
while ( mapFrag.getMapAsync()
,此行显示一条错误消息,内容为:getMapAsync(OnMapReadyCallback) in SupportMapFragment cannot be applied to ()
OnMapReadyCallback是在MainActivity上实现的。
最佳答案
根据MapFragment.getMapAsync()
的文档:
public void getMapAsync (OnMapReadyCallback callback)
设置一个回调对象,该对象将在GoogleMap触发时触发
实例可以使用了。
注意:
必须从主线程调用此方法。
回调将在主线程中执行。
如果用户的设备上未安装Google Play服务,则只有在用户
安装它。
在GoogleMap
创建后立即销毁的极少数情况下,不会触发回调。
回调提供的GoogleMap
对象为非null。
特别是:
参数callback
在以下情况下将触发的回调对象
该地图已准备就绪,可以使用。
您的通话mapFrag.getMapAsync()
中没有OnMapReadyCallback
参数。因此,您应该添加它:
...
mapFrag.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
googleMap.moveCamera(cameraUpdate);
}
})
...
而且,由于以下原因,您不应在单独的线程中调用
getMapAsync()
:(请参见上面的文档链接):必须从主线程调用此方法。
回调将在主线程中执行。
因此,请仔细阅读Get Started官方页面。
关于java - while循环中的mapFrag.getMapAsync()问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60179090/