Google Map Api v2错误
我在执行片段中的以下代码时正在执行numm指针异常。Google Map Api v2错误
MapFragment mapFragment = MapFragment.newInstance();
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.container1, mapFragment);
fragmentTransaction.commit();
mGoogleMap=mapFragment.getMap();
mGoogleMap.addMarker(new MarkerOptions().draggable(true).position(new LatLng(22.03, 72.56)).title("hello world").snippet("Ahmedabad").icon(BitmapDescriptorFactory.fromResource(R.drawable.wifi)));
03-01 15:59:49.370:E/AndroidRuntime(12577): 显示java.lang.NullPointerException 03-01 15:59:49.370:致 E/AndroidRuntime(12577) :at com.tfick.fragment.PoiFragment.onCreateView(PoiFragment.java:64)03-01 15:59:49.370:E/AndroidRuntime(12577):at android.app.FragmentManagerImpl.moveToState(FragmentManager.java: 829) 03-01 15:59:49.370:E/AndroidRuntime(12577):at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035) 03-01 15:59:49.370:E/AndroidRunti (12577):at android.app.BackStackRecord.run(BackStackRecord.java:635)03-01 15:59:49.370:E/AndroidRuntime(12577):at android.app.FragmentManagerImpl.execPendingActions(FragmentManager。 java:1397)
这里是我找到了问题的解决。
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.tfick.android.R;
public class PoiFragment extends MapFragment {
/*object of google map*/
public GoogleMap mGoogleMap;
/* summy location*/
private static final LatLng SYDNEY = new LatLng(23.03, 72.62);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
if (getMap() != null) {
Log.d(getClass().getSimpleName(), "Map ready for use!");
mGoogleMap = getMap();
/* cretaing custom camera position */
CameraPosition mCameraPosition = new CameraPosition.Builder()
.target(SYDNEY).bearing(0).tilt(30).build();
Log.i("gmap", mGoogleMap.toString());
/* setting custom camera position */
mGoogleMap.animateCamera(CameraUpdateFactory
.newCameraPosition(mCameraPosition));
/* adding custom marker on the map. */
mGoogleMap
.addMarker(new MarkerOptions()
.draggable(true)
.position(new LatLng(22.03, 72.56))
.title("hello world")
.snippet("Ahmedabad")
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.wifi)));
mGoogleMap
.addMarker(new MarkerOptions()
.draggable(true)
.position(new LatLng(23.03, 78.10))
.title("hello world")
.snippet("Baroda")
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.wifi)));
}
}
}
我已解决问题。这是解决方案Google Maps Android API v2 - Add a marker failed
ya但是原因是什么。 – Bug 2013-03-01 10:45:26
这也是我的问题 – 2013-03-01 10:52:59
看起来getMap()
返回null
。 可能的解决方案:
- 您是否通过
GooglePlayServicesUtil.isGooglePlayServicesAvailable(context)
检查Google Play服务是否可用? - 地图可能还没有被初始化,尝试
getMap()
在生命周期的后点,像onResume()
MapFragment mapFragment = MapFragment.newInstance(); FragmentTransaction fragmentTransaction = getFragmentManager()。beginTransaction(); fragmentTransaction.add(R.id.container1,mapFragment); fragmentTransaction.commit(); 这段代码的和平工作正确 但是当我getmap()它不会这样做。 – Bug 2013-03-01 10:50:24
是的,那是因为getMap()返回null。你有没有尝试我的一个主张? – Mokus 2013-03-01 10:52:42
错误的代码。什么是PoiFragment?问题在那里。 – 2013-03-01 10:32:50
poi片段是片段类的名称 – Bug 2013-03-01 10:44:13
当我从代码中删除最后两行时,它的工作原理很好 但是当最后两行被添加时,它停止工作 – Bug 2013-03-01 10:44:32